SaveFileDialog я должен использовать свойство FilterIndex или расширение свойства FileName? - PullRequest
0 голосов
/ 18 апреля 2019

На днях у меня был следующий вопрос SaveFileDialog AddExtension не работает должным образом . Теперь у меня возник вопрос:

Следует ли мне использовать свойство FilterIndex или расширение свойства FileName SaveFileDialog , чтобы решить, в каком формате файла я хочу хранить данные?

У меня есть следующий код теста C #:

var dialog = new SaveFileDialog();
dialog.AddExtension = true;
dialog.DefaultExt = "txt";
dialog.Filter = "Text files (*.txt)|*.txt|XML files (*.xml)|*.xml";
dialog.OverwritePrompt = true;
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    string extension = System.IO.Path.GetExtension(dialog.FileName);
    int filterIndex = dialog.FilterIndex;
}

В документации указано, что:

Вы также можете использовать значение FilterIndex после показа файла. диалог для выполнения специальных файловых операций в зависимости от фильтра Избранный.

Если я использую свойство FilterIndex, оно сохранит, например, текстовый документ с расширением XML (Dialog File name = test7.xml, Dialog Save as type = *.txt).

Если я использую расширение FileName, тогда Save as type диалогового окна игнорируется.

1 Ответ

1 голос
/ 18 апреля 2019

Существует разница между именем файла и его форматом.

Свойство FilterIndex может указывать формат файла, но имя файла должно указывать, как они хотят, чтобы имя файла. Они могут быть разными.

Осторожно, однако. Если в вашем списке форматов есть опция «All Files (*.*)», вы столкнетесь с проблемой формата по умолчанию. Этот формат очевиден для пользователя?

Вкратце, я предлагаю вам использовать раскрывающийся список для формата и FileName для этого. Позвольте пользователю сохранить файл CSV с расширением .TXT.

...