是否KeyDown KeySuppress取消KeyUp事件
本文关键字:KeyUp 事件 取消 KeySuppress KeyDown 是否 | 更新日期: 2023-09-27 18:03:56
假设我有这个:
private void txtAnalogValue_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//Non-numeric key pressed => prevent this from being input into the Textbox
e.SuppressKeyPress = true;
}
}
:
private void txtAnalogValue_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
try
{
UpdateState(double.Parse(((TextBox)sender).Text));
}
catch (Exception ex)
{
((TextBox)sender).Text = ioElement.StateVal.ToString("0.00");
}
}
}
我知道这段代码没有多大意义,它只是一个测试。问题是:e.p suppresskeypress = true在KeyDown事件对KeyUp事件有影响,所以回车键将不被接受?
不,e.SuppressKeyPress = true
将忽略Enter
键(它不会转到下一行,文本框的Text属性不会被改变),e.Keycode将在KeyUp
中可见。因此,抑制KeyDown
中的键不会影响KeyUp
事件,您的代码应该可以工作。当你在TextBox
中点击Enter
按钮时,UpdateState
将被调用。您可以试试下面的代码来检查:
private void txtAnalogValue_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.A)
{
e.SuppressKeyPress = true;
}
}
private void txtAnalogValue_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.A)
{
MessageBox.Show("Up");
}
}