Изменить расширение файла, когда пользователь изменит Save As Type в SaveFileDialog - PullRequest
8 голосов
/ 09 ноября 2010

У меня есть SaveFileDialog с возможностью сохранения с типом .foo или .bar.Первым элементом в списке, выбранным по умолчанию, является .foo.Имя файла по умолчанию - «без названия», а расширение по умолчанию - «.foo».Когда появляется SaveFileDialog, он помещает «без названия» в текстовое поле имени файла.Я могу изменить его на «untitled.foo», но это все равно не изменит поведение моей проблемы:

Если пользователь переключается на .bar, как я могу изменить имя файла на untitled.bar?Есть только два события, ни одно из которых не является тем, которое я хочу, и, похоже, оно не меняется само по себе.

Ответы [ 4 ]

6 голосов
/ 09 ноября 2010

Ed,
Я только что проверил, и все отлично работает.
Я сделал это:

        SaveFileDialog sfd = new SaveFileDialog();

        sfd.FileName = "untitled";
        sfd.Filter = "Text (*.txt)|*.txt|Word Doc (*.doc)|*.doc";
        sfd.ShowDialog();

И он автоматически изменит предлагаемое имя сохранения в зависимости от выбранного фильтра.* Я использовал .NET 2.0 framework.
Но я нахожусь на Windows 7, что, я думаю, имеет значение, так как вы видите диалоговое окно сохранения файла системы, и то, как он реализован, имеет значение здесь.

2 голосов
/ 10 ноября 2012

Добавление DefaultExt и AddExtension даст вам поведение, которое вы ищете. Simialr на вопрос / ответ, представленный здесь: https://stackoverflow.com/a/1213353/101971

        var saveFileDialog = new SaveFileDialog
                                 {
                                     Filter = "Foo (*.foo)|*.foo|Bar (*.bar)|*.bar",
                                     DefaultExt = "foo",
                                     AddExtension = true
                                 };
0 голосов
/ 17 июня 2013

Вы можете сделать: savefiledialog1.AddExtension = True

0 голосов
/ 09 ноября 2010

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

...