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と、が呼び出されます。このコードを試して確認できます。EnterTextBox

        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 に答える