Próbuję wprowadzić SaveFileDialog
i FileOpenDialog
wymuszenie rozszerzenia na nazwę pliku wprowadzoną przez użytkownika. Próbowałem przy użyciu próbki proponowanego w question 389070 ale to nie działa zgodnie z przeznaczeniem:System.Windows.Forms.SaveFileDialog nie wymusza domyślnego rozszerzenia
var dialog = new SaveFileDialog())
dialog.AddExtension = true;
dialog.DefaultExt = "foo";
dialog.Filter = "Foo Document (*.foo)|*.foo";
if (dialog.ShowDialog() == DialogResult.OK)
{
...
}
Jeśli użytkownik wpisze tekst test
w folderze, w którym plik test.xml
dzieje istnieć, okno zasugeruje nazwę test.xml
(podczas gdy ja naprawdę chcę tylko zobaczyć *.foo
na liście). Co gorsza: jeśli użytkownik wybierze test.xml
, to rzeczywiście otrzymam test.xml
jako nazwę pliku wyjściowego.
Jak mogę się upewnić, że SaveFileDialog
naprawdę pozwala użytkownikowi tylko wybrać plik *.foo
? Lub przynajmniej, że zastępuje/dodaje rozszerzenie, gdy użytkownik kliknie Save
?
Proponowane rozwiązania (implementowanie obsługi zdarzeń FileOk
) wykonują tylko część zadania, ponieważ naprawdę chciałbym wyłączyć przycisk Save
, jeśli nazwa pliku zawiera nieprawidłowe rozszerzenie.
Aby pozostać w oknie i zaktualizować wyświetlaną nazwę pliku w polu tekstowym w przewodnika FileOk
, aby odzwierciedlić nową nazwę pliku z odpowiednim rozszerzeniem, zobacz following related question.
Nie jestem pewien, ale możesz spróbować ustawić multipleDottedExtensions na True, może to zmieni to zachowanie. – Bobby
Nie, to nic nie zmienia; ale dzięki za podpowiedź. –