控件。在WinForms isn';行不通

控件。在WinForms isn';行不通,winforms,Winforms,我有三个文本框,每个文本框包含ATA代码的两位数部分。我希望UI在文本长度为两位数时自动前进到下一个文本框。很简单,我想: private void txtATAChapter_KeyUp(object sender, KeyEventArgs e) { var textbox = sender as TextBox; if (textbox == null) return; if (textbox.Text.Length == 2) { textbox.Sel

我有三个文本框,每个文本框包含ATA代码的两位数部分。我希望UI在文本长度为两位数时自动前进到下一个文本框。很简单,我想:

private void txtATAChapter_KeyUp(object sender, KeyEventArgs e)
{
    var textbox = sender as TextBox;
    if (textbox == null) return;

    if (textbox.Text.Length == 2)
    { textbox.SelectNextControl(ActiveControl,true, true, true, true); } // breakpoint
}
。。。但它不起作用。当文本长度正确时,断点会点击
SelectNextControl
,但焦点不会改变。我已经验证了所有三个文本框都有
TabStop==true
和顺序
TabOrder
数字(
26
27
28
)。
ActiveControl
被设置为当前关注的
文本框,这并不奇怪


我不知道应该做什么非常简单。

您正试图在
文本框上设置下一个控件。您需要在其容器上设置它,因此请尝试:

textbox.Parent.SelectNextControl(ActiveControl,true, true, true, true);

这就成功了。就像解释一样——如果我仔细阅读的话。这在当时也让我困惑。方法的名称和它在
Control
上(而不是在
IContainerControl
或类似的东西上)的事实有点令人困惑。我想是因为兼容的原因吧