【发布时间】:2015-02-20 08:08:57
【问题描述】:
有没有办法在 C# 中显示 MessageBox 而无需关注消息框中的按钮?例如下面的代码 sn-p (不能按预期工作):
MessageBox.Show("I should not have a button on focus",
"Test",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button3);
我想要的是显示 MessageBox 时没有关注 [Yes] 或 [No]。背景是客户扫描了几个在and 处有回车的条码。因此,当消息框弹出时,他们会在没有注意到消息框的情况下扫描更多条码,然后“按下”按钮。
【问题讨论】:
-
恐怕这对于普通的 MessageBox 来说是不可能的,因为它只是由一堆按钮和一个静态按钮组成,后者无法获得焦点。因此,至少一个按钮始终具有焦点。您可以将取消添加到组合中,将其设为默认值,然后在按下取消时重新显示消息框。
-
我认为最简单的方法是通过您自己的表单实现 MessageBox....
-
当然可以。如果你拥有这台电脑,你就拥有这台电脑。但是
MessageBox没有提供一种方便 的方式来保证没有默认值。按 Return 将始终关闭带有某个值的对话框。请注意,当然,您可以将第三个按钮设为默认按钮(即YesNoCancel框的Cancel按钮)并要求用户按下Cancel以外的其他按钮以继续;您只需重新显示该框,直到它们显示为止。 -
我很确定这是不可能的。您可以实现自定义 MessageBox,也可以将焦点推送到不会执行任何操作的按钮(这是一个肮脏的技巧)。