簡體   English   中英

盡管使用過濾器選項,SaveFileDialog 不顯示任何可能的擴展名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM