web-dev-qa-db-ja.com

テキストボックスでEnterキーを押して、ボタンコマンドを実行します

を押して、検索ボタンの背後にあるコードを実行したい Enter。検索ボタンにAccept Buttonプロパティがあります。ただし、ボタンを非表示として配置すると、検索が実行されません。

押したい Enter テキストボックス内で、表示されていない間にボタンを実行します。どんな提案でも素晴らしいでしょう!以下は、KeyDownイベントでの私のコードの1つの試みです。

if (e.KeyCode == Keys.Enter)
    {
        buttonSearch_Click((object)sender, (EventArgs)e);
    }
29
hex c

TextboxのKeyDown-Eventに登録できます。押されたキーが Enter 次に、ボタンのEventHandlerを実行します。

private void buttonTest_Click(object sender, EventArgs e)
{
    MessageBox.Show("Hello World");
}

private void textBoxTest_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        buttonTest_Click(this, new EventArgs());
    }
}
60
Philipp Eger

または、フォームの.AcceptButtonプロパティを設定できます。 Enterキーを押すと、クリックイベントが自動的に作成されます。

this.AcceptButton = this.buttonSearch;
15
Carol

誰もがKeyDownの回答をカバーしているので、ボタンでIsDefaultを使用するのはどうですか?

このヒントは、簡単なハウツーとその機能について読むことができます。 http://www.codeproject.com/Tips/665886/Button-Tip-IsDefault-IsCancel-and-other-usability

3
Noctis

TextBoxコントロールのkeydownイベントを処理できます。

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if(e.KeyCode==Keys.Enter)
    buttonSearch_Click(sender,e);
}

ボタンVisibleプロパティがfalseに設定されている場合でも機能します

1

Enterが押されたときにボタンをクリックするだけの場合はどうですか?

private void textbox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            buttonSearch.PerformClick();
        }
1
keysl

ButtonSearchにコードがなく、アクションのみがダイアログ結果を返す場合:

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
            DialogResult = DialogResult.OK;
    }
0
volody

WPFアプリでこのコードは完全に動作します

private void txt1_KeyDown(object sender, KeyEventArgs e)
  {
     if (Keyboard.IsKeyDown(Key.Enter) )
         {
              Button_Click(this, new RoutedEventArgs());
         }
   }
0

そこに行きます。

private void YurTextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            YourButton_Click(this, new EventArgs());
        }
    }
0
Ricardo