隐藏

Winform 继承窗体关系,基窗体监控子窗体的关闭事件

发布:2021/9/29 16:09:21作者:管理员 来源:本站 浏览次数:1310

在业务上面有一种需求,同一个窗体只能同时打开一个,如果这个关闭,才能打开另一个。我的做法是在打开窗体的时候把本窗体的Name添加到静态List中,然后本窗体关闭的时候,在从List中移除。这样在窗体打开第二次的时候,就会根据List中是存在而判断。窗体打开的时候,因为都在Main窗体中,所以可以很容易取到窗体的Name,那么关闭呢。每一个窗体都有自己的两个关闭事件,一个是FormClosing,一个是FormClosed。但是如果每个窗体都去实现这两个中的一个,工作量太大。因为我们的子窗体都是继承自基窗体,所以可以注册基窗体的关闭事件,通过sender就可以知道是哪个子窗体关闭。

1、基窗体注册关闭事件,在关闭的时候,通过sender可以知道是哪个子窗体关闭。

    public FormChild ( )
            {
                InitializeComponent ( );
     
                this . FormClosing += FormChild_FormClosing1;
                
                //Power ( );
            }
     
            private void FormChild_FormClosing1 ( object sender ,FormClosingEventArgs e )
            {
                Form form = ( Form ) ( sender );
                if ( FormClosingState . mdiChildForm . Contains ( form . Name ) )
                    FormClosingState . mdiChildForm . Remove ( form . Name );
            }

2、子窗体只需要继承基窗体即可

public partial class FormLineForAssPlan :FormChild