Многоточечное расширение для SaveFileDialog в С#?

В основном я пытаюсь установить фильтр SaveFileDialog, например, скажем... "Xml Document (.asdf.xml)|.asdf.xml". Он будет правильно фильтровать файлы при выборе файла, но при фактическом сохранении файла он сохраняется только как «.xml». Это вообще поддерживается?

Я также не могу придумать подходящего обходного пути, так как большинство обходных путей, по-видимому, связаны с необходимостью вручную изменить имя файла без ведома пользователя.


person dak    schedule 03.08.2010    source источник


Ответы (3)


SupportMultiDottedExtensions = true;

person Stuart Grassie    schedule 03.08.2010

Вы пробовали это?

SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "XML File (*.asdf.xml)|*.asdf.xml|All Files|";
sfd.SupportMultiDottedExtensions = true;
person Community    schedule 03.08.2010

Я попытался создать форму быстрого выигрыша с помощью диалогового окна SaveFileDialog и без проблем смог получить файл для сохранения с многоточечным расширением. Я использую VS2010 и С#. Вот мой код для обработчика события нажатия кнопки:

private void button1_Click(object sender, EventArgs e)
{
    saveFileDialog1.Filter = "Xml Document (.asdf.xml)|*.asdf.xml";
    saveFileDialog1.ShowDialog();

    System.IO.FileStream fs = saveFileDialog1.OpenFile() as System.IO.FileStream;

    fs.Write(new byte[] { }, 0, 0);
    fs.Close();
}

Он работал независимо от того, использовал ли мой фильтр *.asdf.xml или .asdf.xml.

Чем ваш код отличается? Если это то же самое, вы создаете новый файл или перезаписываете существующий? Я не уверен, что еще было бы иначе, не видя вашего кода.

EDIT/UPDATE: только что увидел ответ sgrassie о настройке SupportMultiDottedExtension. Я не устанавливал его, поэтому, возможно, по умолчанию он равен true в C#/.NET 4.

ХТХ!

person David Hoerster    schedule 03.08.2010