我的问题是我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;
}
使用文本框的“已验证”事件而不是“离开”事件来实现此目的。
这将确保您的代码在表单关闭之前执行,并且应该准确地实现您所需要的。