控件。在WinForms isn';行不通
我有三个文本框,每个文本框包含ATA代码的两位数部分。我希望UI在文本长度为两位数时自动前进到下一个文本框。很简单,我想:控件。在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
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
或类似的东西上)的事实有点令人困惑。我想是因为兼容的原因吧