【问题标题】:SaveFileDialog doesn't show any possible extensions despite using Filter option尽管使用了 Filter 选项,SaveFileDialog 不显示任何可能的扩展名
【发布时间】:2014-02-08 22:09:06
【问题描述】:

我现在正在用 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”但我真的很想知道为什么那段代码不起作用。有什么帮助吗?

【问题讨论】:

  • 唯一跳出的是管道分隔符 (|) 周围的空格。如果您删除这些,是否可以解决问题?
  • 不幸的是它没有。

标签: c# winforms


【解决方案1】:

问题是空间。只需将其更改为:

Dialog1.Filter = "Pliki tekstowe|*.txt";

你应该做生意了。

否则它会尝试匹配  *.txt 模式的文件(与 *.txt 相比略有不同) - 你可能没有。

【讨论】:

  • 我用以下答案(来自 msdn)建议的代码替换了该行:Dialog1.Filter = "txt files (.txt)|.txt|All files (.)|*.*";但我没有帮助。我仍然有空白的组合框,没有添加任何扩展
  • 如果我使用上面写的过滤器,我只能从我的文件系统中看到文本 (.txt) 文件。你确定你输入的和我一样吗?
  • 原来我犯了两个错误——你提到的那个,我把 SaveFileDialog 放在设计师的表单上,并命名为 Dialog1,不知何故,这就是所有问题的原因。
【解决方案2】:

看看下面的例子,看看有什么不同:

http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog(v=vs.110).aspx

您应该首先尝试将其添加到您的过滤器中:

"txt files (*.txt)|*.txt|All files (*.*)|*.*"  

为了完整起见,出于描述性原因,您应该在过滤器中添加 (*.txt) 字符串(感谢您澄清 Yuck)。试试看 - 看看会发生什么:) 请记住,它对字符串很敏感。所以尽量不要在文件扩展名之间放置空格

【讨论】:

  • 正确的解决方案,错误的原因。扩展通配符周围的括号与其效果无关。事实上,每对的第一部分只是描述性的。
  • 好像是编辑修改了我这里复制的原文! @Yuck - 同意你的看法。如果有意义的话,我个人喜欢展示这一切(描述性)
【解决方案3】:

我遇到了类似的问题,即使我将 Content-Type 标头设置为“application/pdf”,Firefox 和 safari 上的保存对话框也没有检测到文件扩展名。问题原来是文件名中的空格。我用“-”(连字符)替换了文件名并修复了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 2015-11-30
    • 2018-12-30
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多