c# - 根据事件控件更改 AcceptButton

标签 c# .net winforms visual-studio-2008

我有一个工作的 WinForm,它处理我的客户数据库中的搜索功能。它包含以下控件:

  • 一个文本框,您可以在其中键入搜索字符串 (A)
  • “搜索”按钮 (B)
  • 返回搜索结果的 DataGridView (C)
  • “确定”按钮 (D) 和“取消”按钮 (E)

接下来我要实现的是:

  1. 当 A 处于事件状态时,AcceptButton(输入)应链接到 B
  2. 当 B 或 enter 被按下时,C 应该被激活
  3. 当 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/

相关文章:

javascript - 仅针对 1 个事件按钮禁用 onbeforeunload 事件

c# - 子查询返回多于 1 行

c# - 分离式智能客户端同步

c# - 在设计工具箱中找不到 ToolStripDropDownButton

c# - 为什么这个标签的文字不是完全透明的?

c# - 两个 Types Builder 互相调用是非法的?

c# - 比较两个阶乘而不计算

.net - ClickOnce 部署位置

c# - MVP 三元组之间的通信

c# - 如何在没有边框的情况下移动和调整窗体大小?