我有一个正常工作的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后执行此操作-以防万一搜索没有返回结果。

10-07 17:11