C# 在文本框中按enter键,然后执行按钮命令

C# 在文本框中按enter键,然后执行按钮命令,c#,winforms,button,textbox,C#,Winforms,Button,Textbox,我想通过按Enter键来执行搜索按钮后面的代码。我的搜索按钮具有Accept Button属性。但是,当我将按钮设置为不可见时,我的搜索不会执行 我希望能够在文本框内按Enter键,并在按钮不可见时执行按钮。任何建议都很好!下面是一次尝试键入我的代码的事件 if (e.KeyCode == Keys.Enter) { buttonSearch_Click((object)sender, (EventArgs)e); } 您可以注册到文本框的KeyDown事件,查

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

我希望能够在文本框内按Enter键,并在按钮不可见时执行按钮。任何建议都很好!下面是一次尝试键入我的代码的事件

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

您可以注册到文本框的KeyDown事件,查看按下的键是否为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());
    }
}

您可以处理
TextBox
控件的按键事件

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

即使按钮
Visible
属性设置为
false

时,它也可以工作,因为每个人都在回答
键,所以使用按钮上的
IsDefault
如何

您可以阅读此技巧,了解快速操作方法及其作用:

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

<Button IsDefault = "true" 
        Click     = "SaveClicked"
        Content   = "Save"  ... />
'''

'''

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

this.AcceptButton = this.buttonSearch;

如果你想在按下Enter键的时候点击按钮,这个怎么样

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

WPF
应用程序中,此代码工作正常

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

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

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

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

在某些情况下,textbox不会处理enter键。我想可能是你们在表格上设置了“接受”按钮。在这种情况下,您应该使用
textbox1\u PreviewKeyDown(对象发送者,PreviewKeyDownEventArgs e)

而不是
KeyDown
事件,当它不可见时,您的意思是什么?以上是我尝试过的。当我的按钮属性设置为不可见时。我想在其可见属性设置为False时执行我的按钮。这是什么UI技术?Winforms?可能的副本工作得很好!仅供参考,请确保您的“AcceptButton”设置设置为无。当我的AcceptButton设置为我的按钮时,我使用了此代码,但它不起作用。我这边的工作很糟糕。谢谢大家!!此外,您可以将
e.Handled
设置为
true
,以避免发出蜂鸣音。嘿,按钮测试点击的byval中的
这是什么?我曾尝试在VB.NET中实现你的代码,但不确定这意味着什么。是的,这会起作用,但你必须为此制作一个额外的按钮,并收听
ButtonOnClick
。“这”可能是指当前表单,我不知道它在文本框中的焦点表单时是否能正常工作,当我们尝试textbox.AcceptButton时,它没有扩展方法。您好,欢迎使用SO!请务必稍微解释一下您的源代码。在我看来,这是实现这一点的最佳方法,特别是如果您试图坚持MVVM原则,因为它只需要在XAML中添加一行代码。但我认为这个答案可以通过添加一个简短的示例来改进(该链接总有一天会消失!)。其他解决方案可行,但它似乎浪费了资源,而这个解决方案却不行。有人能告诉我如何在WinForms(CS文件)中执行此操作吗?找不到XAML文件
    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
            DialogResult = DialogResult.OK;
    }