C# 将焦点更改为combobox时发生了一些奇怪的情况
此事件非常简单,当用户输入错误文本时,输出错误消息并返回到上一个控件(在本例中,控件为combobox)。然而,它并没有像预期的那样工作,事实上,它输出了两次错误消息,此外,每当我单击该框时,它都会再次输出两次。当我调试程序时,我发现当Focus()调用时,它会立即跳转到验证事件,这就是错误消息输出两次的原因。问题是为什么它只输出两次而不是循环 此处理程序连接到哪个事件?发件人每次都不同吗?我尝试了相同的代码,只显示了一个消息框。是因为您已经注册了两次事件吗?这是由MessageBox+Focus引起的,这些方法会在焦点更改时触发事件中推拉焦点。不要这样做,设置e.Cancel=true以防止用户选项卡失控。使用ErrorProvider进行友好的错误报告。该案例发生在我单击datetimepicker控件时,我认为原因可能正如Hans Passant所说。C# 将焦点更改为combobox时发生了一些奇怪的情况,c#,C#,此事件非常简单,当用户输入错误文本时,输出错误消息并返回到上一个控件(在本例中,控件为combobox)。然而,它并没有像预期的那样工作,事实上,它输出了两次错误消息,此外,每当我单击该框时,它都会再次输出两次。当我调试程序时,我发现当Focus()调用时,它会立即跳转到验证事件,这就是错误消息输出两次的原因。问题是为什么它只输出两次而不是循环 此处理程序连接到哪个事件?发件人每次都不同吗?我尝试了相同的代码,只显示了一个消息框。是因为您已经注册了两次事件吗?这是由MessageBox+Focu
private void _comboClearingCode_Validating(object sender, CancelEventArgs e)
{
string clearingCodeText = _comboClearingCode.Text;
//MessageBox.Show(clearingCodeText);
int count = 0;
foreach (string item in _comboClearingCode.Items)
{
if (clearingCodeText == item)
break;
count++;
}
if (count == _comboClearingCode.Items.Count)
{
MessageBox.Show("please input a valid client code");
_comboClearingCode.Focus();
}
}