日期:2014-05-18  浏览次数:20825 次

怎样才能单击模态对话框外部,关闭该对话框
Form1中调用了Form2的ShowDialog()方法,现在想单击Form2的外部关闭Form2。
怎样才能实现这个动作。谢谢!

------解决方案--------------------
那就不要用模态对话框好了。
在主窗口的Active事件里面写:
Application.OpenForms.OfType(Form2).ToList().ForEach(x => x.Close());
------解决方案--------------------
模态窗口当你未对本界面做出响应,其他的操作都是无效的,除非采取有效的关闭手段,用户的鼠标焦点或者输入光标将一直停留在其上

所以,不适合你的需求
------解决方案--------------------
有点麻烦,但应该还是有办法解决的。可以用Hook捕捉鼠标消息,当在Form1的范围内点击鼠标时关闭Form2.
------解决方案--------------------

我猜你无非是想搞个提示框。
你甚至也不一定非要纠结于用窗体,用一个临时性的Panel不也可以实现你的需求。

总之达到效果的办法有很多种。不一定非要一根筋用模态对话框。
------解决方案--------------------
多么简单的题目啊
难道现在的人,都把WIN32 API忘光了吗?

C# code
 
Form1:

private void button1_Click(object sender, EventArgs e)
        {
            new Form2().ShowDialog();
        }