2


0

C#でSaveFileDialogのMultidot拡張機能?

基本的に私はSaveFileDialogのフィルターを次のように設定しようとしています…​ 「Xmlドキュメント(_.asdf.xml)| _.asdf.xml」。 ファイルを選択するときにファイルを正しくフィルタリングしますが、実際にファイルを保存するときは、「。xml」としてのみ保存します。 これもサポートされていますか?

また、ほとんどの回避策では、ユーザーが知らないうちに手動でファイル名を変更する必要があるため、適切な回避策を考えることもできません。

3 Answer


4


SupportMultiDottedExtensions = true;


1


これを試しましたか?

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


1


SaveFileDialogを使用してクイックwinフォームを作成する際に突き刺し、問題なくマルチドット拡張子で保存するファイルを取得することができました。 VS2010とC#を使用しています。 ボタンクリックイベントハンドラーのコードを次に示します。

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`のどちらを使用していても機能しました。

あなたのコードはどう違いますか? 同じ場合、新しいファイルを作成していますか、それとも既存のファイルを上書きしていますか? あなたのコードを見なければ、他に何が違うのか分かりません。

編集/更新:SupportMultiDottedExtensionの設定に関するsgrassieの答えを見ました。 設定しなかったため、C#/。NET 4ではデフォルトでtrueに設定されている可能性があります。

HTH!