【问题标题】:want to stop user input by messagebox but bypassed by a Enter keydown想要通过消息框停止用户输入,但被 Enter 按键绕过
【发布时间】:2013-04-02 09:13:03
【问题描述】:

我正在编写一个在条形码扫描仪上运行的 Windows 窗体应用程序。
工厂形式为 .Net2.0CF/C#。

我想要的是每当用户输入错误时,应用程序会弹出一个消息框并阻止下一个输入(实际上是扫描操作),直到用户单击屏幕上的“确定”。

但通常用户会继续扫描下一个内容,因为他们没有发现任何问题,这将插入一个 Enter keydown,因此消息框将被关闭,一句话,消息框确实不阻止用户。

我该如何编码?下面是一个很简单的代码sn -p

private void tb_KeyDown(object sender, KeyEventArgs e)
{
  if (e.KeyCode.ToString() == "Return")
  {
    if(!ValidateInput(tb.Text))
    MessageBox.Show("Error");
  }
}

【问题讨论】:

    标签: c# winforms barcode-scanner motorola-emdk


    【解决方案1】:

    您可以创建自己的窗口(表单)来显示错误消息,但不会对回车键做出反应。

    它应该包含一个用户可以单击的按钮(如您所写),但是您需要确保在显示窗口时该按钮没有焦点。 (因为如果它有焦点,按回车键会“点击”按钮。)

    执行此操作的一种简单方法是添加另一个控件,该控件的 TabStop 设置为 true(例如,文本框、另一个按钮)并且 TabIndex 属性低于按钮。

    另外,也许你可能想做一个

    System.Media.SystemSounds.Beep.Play();
    

    在显示窗口时将用户的注意力吸引到窗口上。

    【讨论】:

    • 谢谢,刚才想起来了,非常感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 2012-10-20
    • 2016-01-25
    • 2010-12-21
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多