2010-11-08 39 views
8

我有一個SaveFileDialog,其中帶有類型.foo或.bar的保存選項。列表中的第一個項目,默認情況下是.foo。默認的文件名是「untitled」,默認的擴展名是「.foo」。當SaveFileDialog出現時,它會將「未命名」放入文件名文本框中。我可以將其更改爲「untitled.foo」,但它仍然不會改變我的問題的行爲:用戶更改時更改文件擴展名SaveFileDialog中的另存爲類型

如果用戶切換到.bar,如何將文件名更改爲untitled.bar?只有兩個事件,這兩個事件都不是我想要的,並且它似乎沒有改變。

+0

我有同樣的問題,我不知道它在Win XP的win32的問題,它不是添加擴展以及我不知道用戶選擇了哪個擴展。 – shabby 2012-02-02 05:27:01

+0

您可以使用SaveFileDialog.Filter或SaveFileDialog.FilterIndex檢索您需要的信息。 – 2012-02-02 14:49:25

+0

剛纔我想到了我認爲是這裏的問題。您很可能在Windows的「文件夾選項」中打開了「隱藏已知文件類型的擴展名」。通過選中它,它將不會在SaveFileDialog中顯示擴展名,即使它將使用擴展名保存。那是怎麼回事? – BeemerGuy 2012-10-18 05:49:27

回答

5

Ed,
我剛剛測試過,它工作得很好。
我這樣做:

 SaveFileDialog sfd = new SaveFileDialog(); 

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

,它會自動改變取決於我選擇的過濾器上建議保存名稱。
我使用了.NET 2.0框架。
但是我在Windows 7上,我認爲這很重要,因爲你看到了系統的文件保存對話框,它的實現方式是重要的。

+0

是的,這絕對看起來它不適用於XP。事實上,我的初步評估是錯誤的。它根本沒有附加文件擴展名。它只是顯示爲「無標題」 – 2010-11-08 22:55:00

0

實際保存文件時,可以從對話框中獲取文件名,然後從那裏執行必要的字符串操作。文件名是SaveFileDialog實例的一個成員

+0

這是一個UI的東西。我知道我可以添加文件擴展名,但我希望用戶看到文件擴展名的變化。 – 2010-11-08 22:53:19

+0

太糟糕的代碼猴,除了ed烈士的論點,如果你想以不同的方式保存文件,取決於用戶選擇的擴展名? – shabby 2012-02-02 05:28:41

1

添加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

你可以這樣做: savefiledialog1.AddExtension =真

+0

這並不能解決我的特殊問題,即在保存框中更改顯示的文件名。 – 2013-06-17 17:35:49