只打开一个子窗体

简介: 在程序处理过程中,某一个功能可能需要打开一个窗体来设置参数,我们需要用户只能打开一个子窗体,可能通过判断窗体对象是否为空来实现。 //判断窗体是否重新实例化 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

目录
相关文章
|
2月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
216 0
|
存储 SQL 算法
学生修改窗体问题汇总
学生修改窗体问题汇总
vb如何设置父窗体与子窗体——MDI窗体
vb如何设置父窗体与子窗体——MDI窗体
C#编程学习19:mdi窗体中子窗体不能重复打开的三种实现方式
C#编程学习19:mdi窗体中子窗体不能重复打开的三种实现方式
C#编程学习19:mdi窗体中子窗体不能重复打开的三种实现方式
|
区块链 C#
C# 窗体修改应用程序图标
C# 窗体修改应用程序图标
394 0
C# 窗体修改应用程序图标
|
C# Windows 容器
C#实现多个子窗体切换效果
C#实现多个子窗体切换效果
1271 0
C#编程-73:panel控件中显示子窗体
C#编程-73:panel控件中显示子窗体
199 0
在C#中设置窗体最前,并且如果不关掉这个窗体,就不能操作其余的控件
窗口名 新窗口名 = new 窗口名();新窗口名.ShowDialog();
486 0
|
C#
WPF查找子控件和父控件方法
原文:WPF查找子控件和父控件方法 public List GetChildObjects(DependencyObject obj, string name) where T : FrameworkElement { Dependen...
1416 0
|
C# Windows 程序员

热门文章

最新文章