为什么要按EventArgs';s e.Handled在KeyPressEventArgs C#中不执行任何操作?

为什么要按EventArgs';s e.Handled在KeyPressEventArgs C#中不执行任何操作?,c#,key-events,C#,Key Events,这个代码(通过互联网找到的)似乎什么都不做。如何防止文本框中出现非数字字符 电子商务的实际目的是什么?需要解释。请参阅: true以绕过控件的默认处理;否则,就错了 还将事件传递给默认控件处理程序 您需要的是suppress按键 e.SuppressKeyPress = !(e.KeyValue >= 48 && e.KeyValue <= 57); 您也可以参考以下内容: .Handled属性用于通知基类 事件已得到处理或是否需要解决。信息技术 不传达已在两个服务

这个代码(通过互联网找到的)似乎什么都不做。如何防止文本框中出现非数字字符

电子商务的实际目的是什么?需要解释。

请参阅:

true以绕过控件的默认处理;否则,就错了 还将事件传递给默认控件处理程序

您需要的是
suppress按键

e.SuppressKeyPress = !(e.KeyValue >= 48 && e.KeyValue <= 57);
您也可以参考以下内容:

.Handled属性用于通知基类 事件已得到处理或是否需要解决。信息技术 不传达已在两个服务器之间处理击键 向下键/向上键和按键。它也适用于带有KeyPreview的表单 已启用,但仅从Form.KeyPress事件的上下文中启用。如果你 有一个Form.KeyPress事件,用于设置控件的.Handled事件 将被忽略。KeyDown事件处理的是一个泄露 KeyEventArgs,其中KeyPress事件处理KeyPress事件Args

.SuppressKeyPress可能就是因为这个原因才添加的,所以 KeyDown事件可以覆盖按键事件

使用textBox1\u键

 e.SuppressKeyPress = !(e.KeyValue >= 48 && e.KeyValue <= 57);
e.SuppressKeyPress=!(e.KeyValue>=48&&e.KeyValue Keys.D9)
{
if(e.KeyCodeKeys.NumPad9)
{
if(e.KeyCode!=Keys.Back)
{
nonnumberrenter=true;
string abc=“请仅输入数字。”;
DialogResult result1=MessageBox.Show(abc.ToString(),“验证数字”,MessageBoxButtons.OK);
}
}
}
if(Control.ModifierKeys==Keys.Shift)
{
nonnumberrenter=true;
string abc=“请仅输入数字。”;
DialogResult result1=MessageBox.Show(abc.ToString(),“验证数字”,MessageBoxButtons.OK);
}

如果要防止文本框中出现非数字字符,则只有一行就足以处理该事件

e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);

如果未处理该事件,它将被发送到操作系统进行默认处理。将Handled设置为true以取消按键事件。告诉我们您遇到的确切问题这里已经有很多帖子显示如何使textbox只接受数字输入。@vnikhil我知道,但我的问题是为什么e.Handled看起来什么都不做。调试并检查它是否执行。我认为您应该更改答案的第一条语句。e、 Handle=true在KeyDown中不起作用,因为此事件不是为抑制字母数字输入而设计的。如果将handled设置为true,则仍将进一步传递字母数字键笔划。使用SuppressKeyPress的代码可以正常工作。那么为什么使用e.Handled呢?它会阻止基类进一步处理事件。当您试图抑制基类中的操作时(例如,在KeyDown中忽略击键),这可能很有用。e.Handled=True表示取消事件,或者表示您在代码中处理事件。处理backspace键也是一个好主意,如果用户输入了错误的号码并想更正它:
e.SuppressKeyPress=!((e.KeyValue>=48&&e.KeyValue与我的相同。我的问题是为什么我们需要处理e,因为它似乎什么都不做。兄弟,它工作得很好,即使我在我的许多项目中使用了这个syntex shappy来帮助你:)真是个错误。Post真的值得-1:)请不要冒犯。@vnikhil它不是关于-1或+1的。我澄清了一些信息,发现了我的一个错误。我以后也不会去了。大多数事情都是这样说的:无意冒犯,这是真的P
 e.SuppressKeyPress = !(e.KeyValue >= 48 && e.KeyValue <= 57);
  if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
        {
            if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
            {
                if (e.KeyCode != Keys.Back)
                {
                    nonnumberenter = true;
                    string abc = "Please enter numbers only.";
                    DialogResult result1 = MessageBox.Show(abc.ToString(), "Validate numbers", MessageBoxButtons.OK);
                }
            }
        }
        if (Control.ModifierKeys == Keys.Shift)
        {
            nonnumberenter = true;
            string abc = "Please enter numbers only.";
            DialogResult result1 = MessageBox.Show(abc.ToString(), "Validate numbers", MessageBoxButtons.OK);

        }
e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);