按文本框中的Enter键并执行按钮命令

时间:2013-11-14 10:46:19

标签: c# button textbox enter acceptbutton

我想按 Enter 执行搜索按钮后面的代码。我有一个Accept Button属性到我的搜索按钮。但是,当我将我的按钮设置为不可见时,我的搜索不会执行。

我希望能够在我的文本框中按 Enter 并在不可见的情况下执行我的按钮。任何建议都会很棒!下面是我在KeyDown事件中的代码的一次尝试

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

10 个答案:

答案 0 :(得分:56)

您可以注册到文本框的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());
    }
}

答案 1 :(得分:15)

或者,您可以设置表单的.AcceptButton属性。 Enter将自动创建一个点击事件。

this.AcceptButton = this.buttonSearch;

答案 2 :(得分:3)

由于每个人都覆盖了KeyDown个答案,如何在按钮上使用IsDefault

您可以阅读此提示,以获得快速操作方法及其功能:http://www.codeproject.com/Tips/665886/Button-Tip-IsDefault-IsCancel-and-other-usability

答案 3 :(得分:1)

您可以处理KeyDown控件的TextBox事件

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

It Works事件按钮Visible属性设置为False

答案 4 :(得分:1)

如果您在按Enter键时单击按钮怎么样?

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

答案 5 :(得分:0)

WPF个应用中此代码运行正常

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

答案 6 :(得分:0)

你去了。

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

答案 7 :(得分:0)

如果buttonSearch没有代码,而唯一的操作是返回对话框结果,则:

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

答案 8 :(得分:0)

在某些情况下,文本框无法处理回车键。我认为可能是您在表单上设置了接受按钮时。在这种情况下,您应该使用KeyDown

而不是textbox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)事件

答案 9 :(得分:-1)

    private void textbox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            //cod for run
        }
    }

    private void buttonSearch_Click(object sender, EventArgs e)
    {
        textbox1_KeyDown(sender, new KeyEventArgs(Keys.Enter));
    }