gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:54:59 26 4
gpt4 key购买 nike

我怎样才能有一个带有两个按钮的 msgbox,验证和取消?

最佳答案

不幸的是,标准的 Win32 MessageBox function不支持带有自定义标签的按钮。并且由于 VB.NET MsgBox function 是该 native 函数的瘦包装器,它也不支持它们。预定义的值就是你所得到的,这意味着你能做的最好的是“OK”和“Cancel”之类的东西,文本解释“OK”意味着“继续验证”。

值得注意的是,多年来,这是 Windows 风格指南认可的推荐做法。其实看起来是it still is .具体来说,请注意以下一般规则的异常(exception)情况:

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,旨在取代陈旧且无法配置的 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应用程序接口(interface)。在您的应用程序中这样做可以促进与用户可能已安装在其计算机上的其他应用程序的一致性,甚至与 Windows 本身的一致性。很难确保您自己的自定义消息框表单得到正确的小改动,例如根据其长度和用户的屏幕大小自动包装标签文本。并根据您的对话框是否包含“取消”按钮来显示/隐藏标题栏中的“X”关闭按钮。以及令人难以置信的其他标准 Windows MessageBox/ TaskDialog免费为您服务,无需您动动手指。这只是对一般原则的重申:当您绝对不需要这样做时,永远不要重新发明轮子。

    一个好的折衷方案可能是使用类似 this TaskDialog wrapper/emulator 的东西。 .在 Vista 及更高版本上, native TaskDialog API 可用,它会自动调用该函数。否则,它使用标准形式并尝试模拟 native TaskDialog 的行为。应用程序接口(interface)。我编写了一个类似的自定义类供我自己使用,但我从未在网上发布它。

    关于.net - 带有验证和取消按钮的消息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6519451/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com