我有一个UserControl,包含三个TextBoxes.在表单上我可以有一个或多个或我的UserControl.我想实现我自己的选项卡行为,所以如果用户在第二个TextBox中按Tab键,我应该只移动到第三个TextBox,如果第二个TextBox输入了任何内容.如果在第二个TextBox中没有输入任何内容,则表单的下一个控件应按照常规选项卡行为获得焦点.如果用户没有在第一个或第二个TextBox和press选项卡中输入任何内容,则会出现这种特殊情况,即应跳过表单上的控件.
通过使用ProcessDialogKey我已经设法让它工作好了但我仍然有一个问题.我的问题是,如果有一种方法来检测WinForms控件如何获得焦点,因为我还想知道我的UserControl是从Tab或Shift-Tab获得焦点然后做我奇怪的东西,但如果用户点击控件我不想做任何特别的事.
作为一般规则,我认为覆盖 TAB 键的标准行为是一个坏主意。也许您可以执行诸如禁用第三个文本框之类的操作,直到在第二个文本框中进行有效输入。
现在,话虽如此,我也应客户的要求打破了这条规则。我们将 Enter 键功能设置为类似于 Tab 键,其中 Enter 键会将值保存在文本字段中,并将光标前进到下一个字段。