44

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

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

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

10 回答 10

94

你可以注册到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());
    }
}
于 2013-11-14T10:51:04.967 回答
17

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

this.AcceptButton = this.buttonSearch;
于 2015-05-22T21:17:21.707 回答
3

既然每个人都KeyDown回答了问题,那么使用IsDefault按钮上的按钮怎么样?

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

这是链接文章中的一个示例:

<Button IsDefault = "true" 
        Click     = "SaveClicked"
        Content   = "Save"  ... />
'''
于 2013-11-14T10:56:45.767 回答
3

您可以处理TextBox控件的 keydown 事件。

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

即使按钮Visible属性设置为false

于 2013-11-14T10:52:47.883 回答
2

如果您只是在按下 Enter 时单击按钮,那该怎么办?

private void textbox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            buttonSearch.PerformClick();
        }
于 2016-06-24T18:17:06.480 回答
1

在某些情况下,文本框无法处理回车键。我认为可能是当您在表单上设置了接受按钮时。KeyDown在这种情况下,您应该使用而不是事件textbox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)

于 2020-03-09T10:12:39.807 回答
0

如果 buttonSearch 没有代码,并且唯一的操作是返回对话框结果,那么:

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
            DialogResult = DialogResult.OK;
    }
于 2018-12-15T17:20:55.800 回答
0

WPF应用程序中此代码运行良好

private void txt1_KeyDown(object sender, KeyEventArgs e)
  {
     if (Keyboard.IsKeyDown(Key.Enter) )
         {
              Button_Click(this, new RoutedEventArgs());
         }
   }
于 2016-08-22T05:31:35.450 回答
0
    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));
    }
于 2016-01-07T18:45:51.297 回答
0

你去吧。

private void YurTextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            YourButton_Click(this, new EventArgs());
        }
    }
于 2018-09-08T23:18:07.533 回答