首页 新闻 搜索 专区 学院

winform中ShowDialog的问题关闭子窗体问题

0
悬赏园豆:30 [已解决问题] 解决于 2012-09-19 17:18

一个主窗体Mainform点击X的时候弹出了子窗体RemindForm函数如下

this.FormClosing+=new FormClosingEventHandler(MainForm_FormClosing);

void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
/*第二种方案*/
DialogResult result = RemindForm.ShowRemindForm();

子窗体有个静态方法:

public static DialogResult ShowRemindForm()
{
     using( RemindForm remind = new RemindForm())
   {
     return remind.ShowDialog();
   }
}

问题是:我点击子窗体上的X的时候Mainform也跟着自动关闭了,搞不懂为什么,求指教!!

问题补充:

其实我就是要做类似于QQ退出的这个功能但在子窗体如图中各种事件绕晕了

十四的主页 十四 | 初学一级 | 园豆:46
提问于:2012-09-19 16:23
< >
分享
最佳答案
0

为什么会关闭我就懒得说了,我只告诉你如何在Closing事件中阻止关闭:

void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{

e.Cancel = true;   // 取消关闭

}

收获园豆:30
Launcher | 高人七级 |园豆:45045 | 2012-09-19 16:25

在子窗体中写还是主窗体写呢

十四 | 园豆:46 (初学一级) | 2012-09-19 16:28

@十四: 主窗体

Launcher | 园豆:45045 (高人七级) | 2012-09-19 16:29

@Launcher: 我陷入了怪圈谢谢你!!如果在子窗体中点击某个按钮让主窗体关闭或者最小化呢 如何控制

十四 | 园豆:46 (初学一级) | 2012-09-19 16:39

@十四: 首先你得拿到主窗体的引用,可以通过子窗体的 Parent 或 MdiParent 来取得,或者在创建子窗体的时候作为参数赋值给子窗体。然后你就可以在子窗体中调用父窗体的Close来关闭窗体,或设置WindowState = Minimized 来最小化窗体。

Launcher | 园豆:45045 (高人七级) | 2012-09-19 16:47

@Launcher: 后面这个用praent 失败了,可否有具体点的例子。中间转换e.Cancel =false true搞晕了

十四 | 园豆:46 (初学一级) | 2012-09-19 17:01

@十四: 

namespace WindowsFormsAnswer
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();

            this.FormClosing += new FormClosingEventHandler(MainForm_FormClosing);
        }

        void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            // 显示关闭系统确认对话框
            AboutBox dlg = new AboutBox();

            // 如果用户点击了取消,则不关闭。
            if (dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK)
                e.Cancel = true;
        }
    }
}
Launcher | 园豆:45045 (高人七级) | 2012-09-20 09:24

@Launcher: 多谢,如今已经搞定了。

十四 | 园豆:46 (初学一级) | 2012-09-20 17:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册