我有兩種形式,mainForm和subForm。當mainForm失去焦點時,我想讓subForm消失,然後在mainForm重新獲得焦點時重新出現。我在mainForm上使用Activated和Deactivate事件來跟蹤mainForm是否具有焦點。當激活被激活時,我做subForm.Show()和相反的停用。我遇到的問題是,當subForm獲得焦點mainForm消失,因爲我不知道如何以編程方式說「讓subForm在mainForm的Deactivate事件觸發時消失,除非它是因爲subForm獲得了焦點。當mainForm因爲用戶點擊另一個應用程序或使用ALT + TAB切換而失去焦點時,這兩個窗口都會消失。我不想離開子窗體。是否有任何方法檢查Deactive是否是火焰因爲屬於該應用程序的另一種形式獲得焦點,而不是一些其他的應用程序?C#表單激活和取消激活事件
class MainForm : Form
{
SubForm subForm = new SubForm();
private void mainForm_Activated(object sender, EventArgs e)
{
this.subForm.Show();
}
private void mainForm_Deactivate(object sender, EventArgs e)
{
this.subForm.Hide()
// I need some logic to make sure that it is only hidden
// when the mainForm loses focus because the user clicked
// some other application in the taskbar and not when the
// subForm itself gains the focus.
}
}
或許,這將有很大的幫助,如果你發佈你正在使用,因爲它是很難沒有看到你在做什麼,這樣的技術問題做出響應的代碼。此外,您可能會得到無關緊要的答案,因爲其他人可能會認爲您在做X時已經完成了y。 – PyNEwbie
我發佈了一些演示代碼。 – goodbyeworld
@ user1779914如果您發現下面的答案有用,您應該將其標記出來。如果您覺得其中一個問題是您的問題的「正確」答案,則應選中該複選框。這有助於提供投資回報,爲您提供答案,並幫助其他人尋找類似問題的解決方案。從長遠來看,這有助於您的聲譽,因爲如果您的問題有很多答案,對問題的觀點數量可以提高您的聲譽。 – PyNEwbie