繁体   English   中英

在文本框中按回车键执行按钮命令

[英]Press enter in textbox to and execute button command

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

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

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

可以注册到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());
    }
}

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

this.AcceptButton = this.buttonSearch;

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

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

即使按钮Visible属性设置为false

既然每个人都涵盖了KeyDown答案,那么在按钮上使用IsDefault怎么样?

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

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

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

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

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

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

private void jobNoToolStripTextBox_KeyPress_1(object sender, KeyPressEventArgs e)
        {
            if(e.KeyChar == Convert.ToChar( Keys.Enter))
            {
                searchJobNo();
            }
        }

有时你必须使用 Key Char class,对我来说也一样

    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));
    }

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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM