假设我有一个带有离开事件的TextBox
。当我单击WinForm的ControlBox的关闭按钮时,首先调用TextBox
的离开事件,然后调用FormClosing
事件,但我想直接FormClosing
事件而不是在上述场景中留下事件。
为了让这项工作成功,我还需要添加什么样的休假活动?
答案 0 :(得分:1)
删除LostFocus
事件中的逻辑,将其放入单独的子例程中。创建一个间隔为10到100毫秒的计时器。在离开事件中开始。在计时器勾选事件处理程序中检查表单是否正在关闭,如果没有运行您的子例程。这是我所说的一个例子,如果您有很多控制事件需要拦截,这可以很快非常,并且您也将丢失EventHandlers中的EventArgs数据。
public partial class Form1 : Form
{
private bool closing;
public Form1()
{
InitializeComponent();
}
private void textBox1_Leave(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void TextBox1LeaveMethod()
{
textBox1.BackColor = Color.Red;
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
if (!closing)
TextBox1LeaveMethod();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
closing = true;
}
}