博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ArcGIS Engine中的数据访问

Posted on 2008-09-01 16:10  heeeey  阅读(202)  评论(0编辑  收藏  举报

问题:

      MDI程序,需要屏蔽掉子窗口的关闭按钮,使点击“关闭”时将子窗体隐藏起来为并不真正执行close。采用的方法是在子窗体的closeing事件中使用

e.Cancel = true;

来把关闭事件取消掉,但是问题来了,虽然把子窗体的关闭事件屏蔽了,当单击主窗体的“关闭”按钮时,关闭时间同样被屏蔽了,跟踪以后发现当单击主窗口的“关闭”按钮时,先执行子窗体的close事件,可是子窗体的关闭事件已经被cancel掉了。

解决方法:

     1. 给子窗体添加一个bool型公开属性bCanClose,来标识窗体closeing事件发生时,是否是要close()还是要hide()。默认值为false表示要执行hide()。

     2. 在主窗体的closeing事件响应函数中将各子窗体的bCanClose的值改为true,在执行个子窗体的close()方法。

     代码如下:

     子窗体    

        private void ToolWindow_FormClosing(object sender, FormClosingEventArgs e)
        {
            
if (bCanClose == false) e.Cancel = true;
            
this.Hide();
        }

    主窗体

 

        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            SetAllWinCanClose();
            CloseAllWin();
            e.Cancel 
= false;

        }