0

テキスト ボックスで「Enter」キー イベントを処理する必要があるため、textBox から継承する新しいクラスを作成し、既に IsInputKey メソッドをオーバーライドしています。問題は、最初にスペースバーを押さないと KeyDown イベントが発生しないことです。

public class EnterTextBox : TextBox
{
    protected override bool IsInputKey(Keys keyData)
    {
        if (keyData == Keys.Enter)
        {
            return true;
        }
        else
        {
            return base.IsInputKey(keyData);
        }
    }
}

上記のクラスから作成した後

EnterLisTextBox enterTextBox1 = new EnterLisTextBox();            
enterTextBox1.KeyDown += enterTextBox1_KeyDown;

キーダウンイベントハンドラは

void enterTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        MessageBox.Show("Pressed enter");;
    }  
}

しかし、これは「Enterキー」を使用する前に「スペースバー」を押した場合にのみ機能します。しかし、テキストボックスにすべてを再入力しても、スペースバーを押すと機能します。どうしてこれなの?なぜスペースバーを押すことが前提条件なのですか?

アップデート:

keyPress イベントの実装は私にとってはうまくいきましたが、スペースバーを使用する前に上記が機能しなかった理由を誰かが知っている場合。これは私がキープレスを使用した方法です。e.KeyChar == '\r'に注意してください

void enterTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '\r')
    {
        MessageBox.Show("Pressed enter");
    }  
}
4

2 に答える 2