我有一个工作的 WinForm,它处理我的客户数据库中的搜索功能。它包含以下控件:
- 一个文本框,您可以在其中键入搜索字符串 (A)
- “搜索”按钮 (B)
- 返回搜索结果的 DataGridView (C)
- “确定”按钮 (D) 和“取消”按钮 (E)
接下来我要实现的是:
- 当 A 处于事件状态时,AcceptButton(输入)应链接到 B
- 当 B 或 enter 被按下时,C 应该被激活
- 当 C 处于事件状态时,AcceptButton 应该链接到 D
我知道这是一个有点大的问题,所以如果您知道答案,请不要犹豫,只回答其中一个项目符号。
编辑:我已经解决了上面要求 1 和 3 的实现,但我仍在寻找第二个要求的答案。澄清一下,当搜索开始时(意味着我按下了键盘上的回车键或使用鼠标搜索按钮),我希望焦点转移到 DataGridView 中的第一行。
最佳答案
当您获得文本框的文本更改事件时,将 AcceptButton 设置为“搜索”:
private void textBox1_TextChanged(object sender, EventArgs e)
{
this.AcceptButton = SearchButton;
}
这里可能需要更多代码,检查字符串的长度等。
完成搜索并填写 DataGridView 后,您就可以将 AcceptButton 设置为“确定”。
private void dataGridView1_DataMemberChanged(object sender, EventArgs e)
{
this.AcceptButton = OKButton;
}
尽管您可能不想使用此事件。
“取消”始终是取消按钮。
编辑:好的,对于第 2 部分,您需要以下代码:
private void SearchButton_Click(object sender, EventArgs e)
{
dataGridView1.Focus();
}
这将使它在按下搜索按钮后立即激活,但您可能希望在 DataGridView 已填充时执行此操作 - 以防万一搜索未返回任何结果。
关于c# - 根据事件控件更改 AcceptButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/602876/