只打开一个子窗体

简介: 在程序处理过程中,某一个功能可能需要打开一个窗体来设置参数,我们需要用户只能打开一个子窗体,可能通过判断窗体对象是否为空来实现。 //判断窗体是否重新实例化 private frmAutoSave fas = null; protected o...

在程序处理过程中,某一个功能可能需要打开一个窗体来设置参数,我们需要用户只能打开一个子窗体,可能通过判断窗体对象是否为空来实现。

        //判断窗体是否重新实例化
       private frmAutoSave fas = null;
        protected override void OnClick()
        {
            try
            {
                if (fas == null)
                {
                    fas = new frmAutoSave(timer);
                    fas.Show();
                }
                else
                {
                    fas.Show();
                }
            }
            catch (Exception exp)
            {
                MessageBoxEx.Show(exp.Message + exp.StackTrace);
            }

        }

  

但是,用户在关闭窗体时,不能释放对象,所以要重写关闭事件:

//重写关闭事件
protected virtual void frmAutoSave_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
    this.Hide();
}

  其中,Cancel属性是获取或设置指示是否应取消事件的值。即取消当前关闭事件的执行。这样的功能很有用,比如MSDN上说的一个例子:如果程序关闭的时候数据没有保存(可以用一个Bool变量为判断),就是关闭事件中设置Cancel属性为true,这样程序就不会关闭了。

参考:https://msdn.microsoft.com/zh-cn/library/system.componentmodel.canceleventargs.cancel.aspx

目录
相关文章
|
9月前
|
存储 SQL 算法
学生修改窗体问题汇总
学生修改窗体问题汇总
|
9月前
|
C#
创建窗体及一系列操作
创建窗体及一系列操作
|
9月前
|
API
vb如何设置父窗体与子窗体——MDI窗体
vb如何设置父窗体与子窗体——MDI窗体
C#编程学习19:mdi窗体中子窗体不能重复打开的三种实现方式
C#编程学习19:mdi窗体中子窗体不能重复打开的三种实现方式
C#编程学习19:mdi窗体中子窗体不能重复打开的三种实现方式
|
区块链 C#
C# 窗体修改应用程序图标
C# 窗体修改应用程序图标
288 0
C# 窗体修改应用程序图标
|
C# Windows 容器
C#实现多个子窗体切换效果
C#实现多个子窗体切换效果
1151 0
C#实现多个子窗体切换效果
在C#中设置窗体最前,并且如果不关掉这个窗体,就不能操作其余的控件
窗口名 新窗口名 = new 窗口名();新窗口名.ShowDialog();
350 0