4

假设我有这个:

    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");
            }
        }
    }

我知道这段代码没有多大意义,它只是测试。问题是:KeyDown 事件中的 e.SuppressKeyPress = true 是否会影响 KeyUp 事件,所以不会接受 Enter 键?

4

1 回答 1

2

不,e.SuppressKeyPress = true只会忽略该Enter键(它不会转到下一行,并且文本框的 Text 属性不会更改)并且 e.Keycode 将在KeyUp. 因此,抑制 中的键KeyDown不会影响KeyUp事件,并且您的代码应该可以工作。将UpdateState在您点击Enter中的按钮时调用TextBox。您可以尝试使用此代码进行检查:

        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");
            }
        }
于 2013-03-14T10:37:51.373 回答