问题描述
- 请问:窗体失去焦点时最小化的问题
-
想实现主窗体失去焦点时最小化的功能,但是要排除下面的两种情况:
(1)有其他子窗体打开而使主窗体失去焦点的;
(2)有MessageBox窗体弹出而使主窗体失去焦点的;
第(1)条实现了,但第(2)条无法排除,请教高手指点。
我的代码是这样的:private void Form1_Deactivate(object sender, EventArgs e) { //只打开了一个窗体,才最小化;如果还有其他窗体打开了就不最小化 if (Application.OpenForms.Count == 1) { this.WindowState = FormWindowState.Minimized; } }
解决方案
不使用系统的MessageBox.show() , 做一个自定义的MessageBox
解决方案二:
不使用系统的MessageBox.show() , 做一个自定义的MessageBox
解决方案三:
不使用系统的MessageBox.show() , 做一个自定义的MessageBox
解决方案四:
不使用系统的MessageBox.show() , 做一个自定义的MessageBox
解决方案五:
不使用系统的MessageBox.show() , 做一个自定义的MessageBox
解决方案六:
找到一个答案:
http://bbs.csdn.net/topics/290046863
就是定义一个窗体级bool变量(比如:isMessageBoxExist),在调用MessageBox.show() 之前,让该变量=true,关闭后让该变量=false;
这样就可以如下写判断语句了:
if (Application.OpenForms.Count == 1 && !isMessageBoxExist)
{
this.WindowState = FormWindowState.Minimized;
}
时间: 2024-11-01 11:15:33