我想通过按来执行我的搜索按钮后面的代码Enter。我的搜索按钮有 Accept Button 属性。但是,当我将按钮设置为不可见时,我的搜索不会执行。
我希望能够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;
既然每个人都KeyDown
回答了问题,那么使用IsDefault
按钮上的按钮怎么样?
您可以阅读此提示以快速了解操作方法及其作用: http: //www.codeproject.com/Tips/665886/Button-Tip-IsDefault-IsCancel-and-other-usability
这是链接文章中的一个示例:
<Button IsDefault = "true"
Click = "SaveClicked"
Content = "Save" ... />
'''
您可以处理TextBox
控件的 keydown 事件。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode==Keys.Enter)
buttonSearch_Click(sender,e);
}
即使按钮Visible
属性设置为false
如果您只是在按下 Enter 时单击按钮,那该怎么办?
private void textbox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
buttonSearch.PerformClick();
}
在某些情况下,文本框无法处理回车键。我认为可能是当您在表单上设置了接受按钮时。KeyDown
在这种情况下,您应该使用而不是事件textbox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
如果 buttonSearch 没有代码,并且唯一的操作是返回对话框结果,那么:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
DialogResult = DialogResult.OK;
}
在WPF
应用程序中此代码运行良好
private void txt1_KeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.IsKeyDown(Key.Enter) )
{
Button_Click(this, new RoutedEventArgs());
}
}
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));
}
你去吧。
private void YurTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
YourButton_Click(this, new EventArgs());
}
}