我的问题是我TextBox在Leave事件中验证 a 并检查它TextBox是否有一些东西。如果 this 中的文本TextBox与零相同,MessageBox则出现 a,但如果表单正在关闭且焦点在 thisTextBox中,则MessageBox出现,因为TextBox没有任何内容。
如何避免Leave表单关闭时的验证?
您将需要覆盖OnFormClosing表单上的方法并设置一个标志,让您知道表单正在关闭。然后,在验证时,首先检查该标志。
请务必在调用之前base设置标志。
protected override void OnFormClosing(FormClosingEventArgs e)
{
_isClosing = true;
base.OnFormClosing(e);
}
一种方法是删除文本框引发的事件。我不确定您是如何验证的,但您可以尝试在事件中将该Enabled属性设置为 false 。FormClosing
private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
{
myTextBox.Enabled = false;
}
或者删除Leave事件处理程序
private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
{
myTextBox.Leave -= myTextBox_Leave;
}
使用文本框的“已验证”事件而不是“离开”事件来实现此目的。
这将确保您的代码在表单关闭之前执行,并且应该准确地实现您所需要的。