加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – 带有验证和取消按钮的消息框

发布时间:2020-12-14 03:57:41 所属栏目:Windows 来源:网络整理
导读:我怎么能有一个msgbox有两个按钮,验证和取消? 解决方法 不幸的是,标准的Win32 MessageBox function不支持带有自定义标签的按钮.由于VB.NET MsgBox函数是该本机函数的瘦包装,因此它也不支持它们.您可以获得预定义的值,这意味着您可以做的最好的事情就是“确
我怎么能有一个msgbox有两个按钮,验证和取消?

解决方法

不幸的是,标准的Win32 MessageBox function不支持带有自定义标签的按钮.由于VB.NET MsgBox函数是该本机函数的瘦包装,因此它也不支持它们.您可以获得预定义的值,这意味着您可以做的最好的事情就是“确定”和“取消”,文本说明“确定”意味着“继续验证”.

值得注意的是,多年来,这是Windows风格指南所赞同的推荐做法.实际上,它看起来像it still is.具体来说,请注意以下一般规则的例外情况:

Use positive commit buttons that are specific responses to the main instruction,instead of generic labels such as OK or Yes/No. Users should be able to understand the options by reading the button text alone.
Exceptions:

  • Use Close for dialogs that don’t have settings,such as informational dialogs. Never use Close for dialogs that have settings.
  • Use OK when the “specific” responses are still generic,such as Save,Select,or Choose.
  • Use OK when changing a specific setting or a collection of settings.
  • For legacy dialog boxes without a main instruction,you can use generic labels such as OK. Often such dialog boxes aren’t designed to perform a specific task,preventing more specific responses.
  • Certain tasks require more thought and careful reading for users to make informed decisions. This is usually the case with confirmations. In such cases,you can purposely use generic commit button labels to force users to read the main instructions and prevent hasty decisions.

Windows Vista引入了一个新的API,旨在取代老化和无法配置的MessageBox – 它被称为TaskDialog.如果您运行的是Windows Vista或7,您无疑会在整个Windows shell中看到此对话框.事实上,它允许您为每个按钮指定自定义名称,并提供一系列其他自定义选项.但这种控制并不是免费的. TaskDialog函数有两个问题:

> .NET Framework不包含开箱即用的包装器.您需要编写自己的简单包装器,或者下载包含此类包装器的Windows API Code Pack.但是这会为你的代码增加额外的依赖性 – 你必须决定是否值得.
>因为API仅在Vista中引入,这意味着程序只能在Vista或更高版本上运行时使用它.如果你仍然需要针对Windows XP(或2000),那你就不走运了.显示TaskDialog的代码将失败,您需要包含一个回退例程来显示标准的MessageBox.这当然会让您回到起点,而无法在这些传统操作系统上自定义按钮标签.同样,只有您可以决定这是否是您的应用程序和/或部署方案的重要问题.

几代VB程序员使用的另一个选项是打开你自己的小MessageBox风格的表单.布置一个带有图标/图像的位置,一些标题文本和所需的所有按钮的简单表单并不难.由于您已经创建了整个表单,因此您可以根据需要随意自定义代码.

如果您在Vista之前的Windows版本中绝对需要此功能,那么创建自己的消息框表单是您唯一的选择.否则,我强烈建议您利用新的TaskDialog API.在您的应用程序中执行此操作可以提高用户可能已在其计算机上安装的其他应用程序的一致性,甚至可以使用Windows本身.很难确保您自己的自定义消息框表单获得正确的小触摸,例如根据标签文本的长度和用户的屏幕大小自动包装标签文本.并根据对话框是否包含“取消”按钮显示/隐藏标题栏中的“X”关闭按钮.还有一个令人难以置信的其他东西,标准的Windows MessageBox / TaskDialog为您免费提供,而无需抬起手指.这只是对一般原则的重述:当你不是必须这样做时,永远不要重新发明轮子.

一个很好的折衷方案可能是使用类似this TaskDialog wrapper/emulator的东西.在Vista及更高版本,本机TaskDialog API可用的地方,它会自动调用该函数.否则,它使用标准表单并尝试模拟本机TaskDialog API的行为.我为自己编写了一个类似的自定义类,但我从来没有在网上发布它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读