System.Windows.Forms.SaveFileDialog 不强制执行默认扩展名

2024-02-24

我正在努力使SaveFileDialog and FileOpenDialog对用户输入的文件名强制执行扩展名。我尝试过使用中提出的示例问题 389070 https://stackoverflow.com/questions/389070/how-does-the-addextension-property-work-in-c-2-0但它没有按预期工作:

var dialog = new SaveFileDialog())

dialog.AddExtension = true;
dialog.DefaultExt = "foo";
dialog.Filter = "Foo Document (*.foo)|*.foo";

if (dialog.ShowDialog() == DialogResult.OK)
{
    ...
}

如果用户输入文本test在一个包含文件的文件夹中test.xml碰巧存在,对话框会建议名称test.xml(而我真的只是想看看*.foo在列表中)。更糟糕的是:如果用户选择test.xml,那么我确实会得到test.xml作为输出文件名。

我怎样才能确保SaveFileDialog实际上只允许用户选择一个*.foo文件?或者至少,当用户单击时它会替换/添加扩展名Save?

建议的解决方案(实施FileOk事件处理程序)只完成部分工作,因为我真的想禁用Save如果文件名的扩展名错误,则单击按钮。

为了留在对话中and更新文本框中显示的文件名FileOk处理程序,以反映具有正确扩展名的新文件名,请参阅以下相关问题 https://stackoverflow.com/questions/1599511/how-to-replace-filename-in-savefiledialog-fileok-event-handler.


您可以处理FileOk http://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.fileok.aspx事件,如果扩展名不正确则取消它

private saveFileDialog_FileOk(object sender, CancelEventArgs e)
{
    if (!saveFileDialog.FileName.EndsWith(".foo"))
    {
        MessageBox.Show("Please select a filename with the '.foo' extension");
        e.Cancel = true;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System.Windows.Forms.SaveFileDialog 不强制执行默认扩展名 的相关文章

随机推荐

  • Vim,如何自动删除“_”的空行?

    怎样才能让Vim总是删除内容到 当我们删除空行时 N dd or d motion EDIT1 例如 我写过 Hello 某处 然后用yy 然后我将光标移动到其他地方 删除一些空白行N dd到 而没有明确指示寄存器 然后我可以走一条正确的线
  • (撰写)Common Lisp

    我们在 P Graham 的 ANSI Common Lisp 第 110 页 中找到了这个函数构建器来实现组合 参数是 n gt 0 带引号的函数名称 我不完全理解它 所以我将在这里引用代码并在下面指出我的问题 defun compose
  • 如何使用 Ionic 4 检测平台

    如何使用 Ionic 4 检测浏览器和移动网络平台 因为当我在桌面浏览器中尝试使用以下代码时 它没有落入 core 健康 状况 if this platform is core alert core platform else alert
  • 返回Task的接口的同步实现

    如同在同步代码中实现需要 Task 返回类型的接口 https stackoverflow com questions 26352034 implementing an interface that requires a task retu
  • 如何不在链接中的元素下划线?

    我试图在链接上加下划线 但 myspan 元素除外 在任何情况下我都不希望在该元素下加下划线 我还想更改 myspan 的颜色 规则似乎并不适用于此 如果我颠倒顺序并且不在 a 下划线而是在 myspan下划线 则似乎适用了规则 我见过此链
  • 在 Node 中使用 Postgres 的 Sequelize 请求查询日期范围

    我想做的是使用 Node js 中的 Sequelize ORM 获取两个日期之间的行 我正在使用 PostgreSQL 问题是 Sequelize 错误地解释了我提出的请求 这是我用来发出请求的代码 const dbresp await
  • 未找到无服务器命令“离线”

    我正在运行我的nodejs代码并且还安装了无服务器 npm i g 无服务器 但是在使用命令运行它时sls offline start CacheInvalidations我收到错误如下 无服务器错误 未找到无服务器命令 离线 您指的是 c
  • Android,.txt 电子邮件附件未通过意图发送

    我正在测试创建一个 txt 文件 然后通过意图将其作为电子邮件附件发送 创建 txt 文件 try String fileName testFileName txt File root new File Environment getExt
  • 从 maven 在 nexus 中部署工件会出现错误“返回代码是:401”?

    我在 Nexus 中部署时收到 401 错误 我没有对已安装的 Nexus 进行任何更改 Nexus 正在运行localhost 8080 nexus我可以使用默认用户 密码登录 当我跑步时mvn deploy我收到这个错误 这是我的 PO
  • 将所有数据框字符列转换为因子

    给定一个包含各种类型列的 预先存在的 数据框 将其所有字符列转换为因子而不影响任何其他类型列的最简单方法是什么 这是一个例子data frame df lt data frame A factor LETTERS 1 5 B 1 5 C a
  • 使用 JPA Criteria API,您可以执行仅产生一个连接的获取连接吗?

    使用 JPA 2 0 似乎默认情况下 没有显式获取 OneToOne fetch FetchType EAGER 字段在 1 N 次查询中获取 其中 N 是包含定义与不同相关实体的关系的实体的结果数 使用 Criteria API 我可能会
  • Openpyxl - 对象没有属性“load_workbook”

    我正在尝试使用 openpyxl 加载现有工作簿 但当我试图奔跑时这段代码 http packages python org openpyxl usage html read an existing workbook 我收到以下错误 Att
  • ASP.NET Core 3.1 无法取消保护消息。状态在调试器中运行

    我已使用默认模板从 VS 2022 创建了 ASP NET Core 3 1 Web 应用程序 并选择 Microsoft Identity 来使用 Azure AD 身份验证 向导在我的 Azure AD 租户中生成了应用程序注册 一切看
  • 是否可以创建一个剪切的div?

    是否可以创建一个剪切 倾斜的标题 div 如下图所示 它适用于移动网站 是的 这是可能的 DEMO http jsfiddle net jbutler483 2qmmpmb9 2 wrapper overflow hidden height
  • 媒体查询/根据屏幕尺寸加载不同的图像

    这可能是基本的 但我迷失在我在网上找到的所有解决方案中 我有一个基于 Twitter Bootstrap 3 的正在运行的网站 www webstalab com 但使用的图像 描绘了两个拿着球的雕像 相当大 大约 900kb 因此在较慢的
  • 将 War 部署到 Mule 独立服务器中

    我有一个 mule 独立服务器 其中包含我正在开发的应用程序 该应用程序使用的许多服务将来将从 Mule 容器移至 JBoss 集群中 因此 我在 Mule 流和 Web 服务之间保持了严格的分离 然而 截至目前 我需要将 War 文件部署
  • 如何在 Maven 中包含/引用 jackson-all.jar

    我无法找到 jackson all jar 的存储库条目 不知道为什么我可以看到单独的杰克逊罐子信息 所以 如何引用 jackson all jar 对于 杰克逊 2 请查看com fasterxml jackson http search
  • awk 中的字符串比较

    我需要按字母顺序比较两个字符串 而不仅仅是相等测试 我想知道有没有办法在 awk 中进行字符串比较 当然可以 pax echo hello goodbye gawk if 0 hello print HELLO HELLO 你也可以做不等式
  • 将内部 div 不透明度设置为 1,但不生效

    我有一个带有背景图像和背景颜色的 div 我把这个div的不透明度设置为0 7 之后 我在这个 div 内部创建了一个内部 div 但我不想给这个 div 带来不透明度 这是我的CSS代码 outer position relative b
  • System.Windows.Forms.SaveFileDialog 不强制执行默认扩展名

    我正在努力使SaveFileDialog and FileOpenDialog对用户输入的文件名强制执行扩展名 我尝试过使用中提出的示例问题 389070 https stackoverflow com questions 389070 h