[英]SaveFileDialog doesn't show any possible extensions despite using Filter option
我現在正在用 C# 創建一個應用程序,它在單擊按鈕時將數據保存到文件中。 文件的名稱和位置由用戶定義,我希望程序自動將 .txt 擴展名添加到名稱中,並在“將文件另存為”組合框中僅顯示 1 個可能的擴展名。 我有這個代碼:
SaveFileDialog Dialog1 = new SaveFileDialog();
Dialog1.DefaultExt = "txt";
Dialog1.Filter = "Pliki tekstowe | *.txt";
Dialog1.AddExtension = true;
private void button1_Click(object sender, EventArgs e)
{
if (Dialog1.ShowDialog() == DialogResult.OK)
{
System.IO.Stream fileStream = Dialog1.OpenFile();
System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream);
sw.WriteLine("Writing some text in the file.");
sw.WriteLine("Some other line.");
sw.Flush();
sw.Close();
}
this.Close();
}
但是每當我單擊按鈕時,我在組合框中沒有選項可供選擇,並且 .txt 擴展名不會添加到文件名中,以防用戶自己指定擴展名。 我知道我可以通過檢查用戶是否提供了正確的擴展名來繞過它,如果他沒有在名稱中添加“.txt”,但我真的很想知道,為什么那段代碼不起作用。 有什么幫助嗎?
問題是空間。 只需將其更改為:
Dialog1.Filter = "Pliki tekstowe|*.txt";
你應該做生意。
否則,它試圖匹配的模式的文件*.txt
(巧妙地相比, *.txt
) -你可能沒有。
看看下面的例子,看看區別:
http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog(v=vs.110).aspx
您應該首先嘗試將其添加到您的過濾器中:
"txt files (*.txt)|*.txt|All files (*.*)|*.*"
為了完整起見,出於描述性原因,您應該在過濾器中添加 (*.txt) 字符串(感謝您澄清 Yuck)。 試試看 - 看看會發生什么 :) 記住它對字符串很敏感。 所以盡量不要在文件擴展名之間放置空格之類的東西
我有一個類似的問題,即使我將 Content-Type 標頭設置為“application/pdf”,firefox 和 safari 上的保存對話框也沒有檢測到文件擴展名。 問題原來是文件名中的空格。 我用“-”(連字符)替換了文件名並修復了它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.