【问题标题】:SaveFileDialog Filter shows .xlsx Links?SaveFileDialog 过滤器显示 .xlsx 链接?
【发布时间】:2014-09-06 18:35:36
【问题描述】:

我想打开一个 SaveFileDialog 和过滤器,例如 .tgz 文件。这是我的代码:

string dummyFileName = "file.tgz";
string savePath = "fail";
SaveFileDialog sf = new SaveFileDialog();
//Feed dummy name to the save dialog
sf.FileName = dummyFileName;
sf.Filter = ".tar.gz|*.tgz";
if (sf.ShowDialog() == DialogResult.OK)
{
    //Now here's our save folder
    savePath = Path.GetFullPath(sf.FileName);
}
// then i check if savePath = "fail", in case the user abborted it, and return.

过滤器有效。我也将其更改为 .txt 或 .exe,但我注意到:我的桌面上有一些指向 .xlsx 文件的链接,这些链接已显示。未显示实际文件,仅显示 Excel 文件中的链接!有没有其他人注意到这一点并找到了解决方法?

问题是,我以后想使用这个文件名。当用户现在单击链接时,它会更改文件名。

【问题讨论】:

  • 我明白了。尴尬的 Windows 行为可能与 Office 安装的 shell 扩展有关,但这只是猜测。你无能为力,你不能弄乱用户的机器。如果您绝对想防止用户选择错误的文件,但不确定是否有必要,那么您必须仔细检查文件扩展名。您可以在 FileOk 事件的事件处理程序中执行此操作。
  • 你有同样的问题吗?尴尬...不,我不能搞砸。问题是我的代码将在这种情况下创建一个 .tgz 或 .xlsx 文件,并且可能会覆盖现有的文件。只是为了防止这一切,我不想看到他们。解决方法是防止这种情况的好方法,谢谢。

标签: c# excel filter xlsx savefiledialog


【解决方案1】:

如果您想过滤对话框中显示的内容而不是过滤文件保存为的扩展名,请在您的Dialog 上设置DefaultExt 属性:

string dummy = "file.tgz";
string path = "";
SaveFileDialog sf = new SaveFileDialog();
sf.FileName = dummy;
sf.DefaultExt = ".tgz"; // <== This one.
sf.Filter = "gzipped tar files (*.tgz)|*.tgz";
if (sf.ShowDialog() == true)
{
    path = sf.FileName;
}

这将过滤您的Dialog 中显示的文件。

【讨论】:

    猜你喜欢
    • 2017-02-10
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多