我有一个Windows窗体应用程序,在其中创建了两个标签页。在一个标签页中,我有一个发送电子邮件通知的按钮。在标签页离开事件中,我有一些代码可以执行其他一些操作。当我单击此按钮发送电子邮件时。首先,它触发tabpage离开事件,因为该按钮包含button1.enabled = false;在下面的第一行中,
private void btnTestEmail_Click(object sender, EventArgs e)
{
btnTestEmail.Enabled = false;
bool sent = Support.SendEmail("Test Email", "This is a test email, Please ignore.", null);
--
}
但是当我删除btnTestEmail.Enabled = false时;代码,它不会触发Tabpage离开事件。触发标签页离开事件的原因可能是什么。由于这是vbery的奇怪行为。因为我不想触发标签页的任何事件。
问候
更改btnTestEmail.Enabled
为false将更改ActiveControl
触发Leave
事件的。
根据MSDN:
当您使用键盘(TAB,SHIFT + TAB等),通过调用Select或SelectNextControl方法或将ContainerControl.ActiveControl属性设置为当前窗体来更改焦点时,焦点事件将按以下顺序发生:
输入
重点
离开
证实
已验证
失落的焦点
你可以做什么:
我要消除此行为的方法是取消订阅该Leave
事件,然后将该Enabled
属性设置为false之后重新订阅该事件。
像这样:
this.tabPage1.Leave -= new System.EventHandler(this.tabPage1_Leave);
btnTestEmail.Enabled = false;
this.tabPage1.Leave += new System.EventHandler(this.tabPage1_Leave);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句