我有一个正常工作的WinForm,可以处理客户数据库中的搜索功能。它包含以下控件:
在其中输入搜索字符串的文本框(A)
一个“搜索”按钮(B)
返回搜索结果的DataGridView(C)
“确定”按钮(D)和“取消”按钮(E)
我接下来要尝试的是:
当A处于活动状态时,AcceptButton(输入)应链接到B
当按B或Enter时,C应该激活
当C处于活动状态时,AcceptButton应该链接到D
我意识到这是一个有点大的问题,因此,如果您知道答案,请不要犹豫只回答其中一项。
编辑:我已经解决了上述要求1和3的实现,但我仍在寻找第二个要求的答案。为了明确起见,当启动搜索时(意味着我已经用鼠标按下了键盘上的Enter或用鼠标按下了搜索按钮),我希望焦点移到DataGridView中的第一行。
最佳答案
当您获得textBox的文本更改事件时,将AcceptButton设置为“ Search”:
private void textBox1_TextChanged(object sender, EventArgs e)
{
this.AcceptButton = SearchButton;
}
这里可能会需要更多代码,检查字符串的长度等。
然后,完成搜索并填写DataGridView后,可以将AcceptButton设置为“ OK”。
private void dataGridView1_DataMemberChanged(object sender, EventArgs e)
{
this.AcceptButton = OKButton;
}
虽然您可能不想使用此事件。
“取消”始终是CancelButton。
编辑:对于第2部分,您需要以下代码:
private void SearchButton_Click(object sender, EventArgs e)
{
dataGridView1.Focus();
}
按下搜索按钮后,它将立即变为活动状态,但是您可能要在填充DataGridView后执行此操作-以防万一搜索没有返回结果。