WinForm的技巧(1 of n)窗口关闭的提示

2019-12-14 03:09栏目:bob体育平台
TAG:

1 在主窗口中实例化子窗口

在主窗口中实例化子窗口,并非在按键中实例化子窗口对象。

Form2 f2 = new Form2();

在网络找来一些艺术,以为还都不利,上边给出情势:

本身将通过本文向大家介绍加多"窗口关闭的唤起"的符合做法。

2 通过按键来彰显主窗口

在按键中必要贯彻的是窗口的展现

private void Config_Click(object sender, EventArgs e)
        {
            f2.Show();
        }

在线扫描相机的调治将养进程中,供给开荒调节和测量检验分界面来打开岗位的安顿。调节和测验实现后,风流倜傥种常用的不二等秘书诀是将调节和测量检验参数保存并在下一次运转时加载。另蓬蓬勃勃种简易方法是一直利用该参数运路程序。因而,在后生龙活虎种状态下,供给落到实处的功力是:尽管关闭调节和测量检验窗口,其窗口对象也不自由。除非其主窗口关闭,才销毁其调度窗口的靶子。

在程序运行时,能够透过点击右上角的红叉,关闭一个窗体;也能够通过调用窗体的Close(卡塔尔(英语:State of Qatar)方法关闭窗体。假若想在窗体关闭前向客商提供二个提示框,制止重大新闻未被保存就停业,大家会怎么办啊?非常多个人会想到在调用Close前插手消息框代码。但那几个做法是不周到的,因为Close方法是被调用的,你不精晓Close在会哪个地方调用,并且你不也许四处都写音讯框语句。正确的做法却不是调用Close此前,而是调用Close"之后"

3 关闭子窗口而不释放子窗口对象的章程

经查询和实证,修改子窗口中Dispose(在子窗口设计器中寻找修改)的方法是可行的。更改如下:

protected override void Dispose(bool disposing)
        {
            Hide();
            //if (disposing && (components != null))
            //{
            //    components.Dispose();
            //}
            //base.Dispose(disposing);
        }

1 在主窗口中实例化子窗口

  在主窗口中实例化子窗口,并非在按键中实例化子窗口对象。

 Form2 f2 = new Form2();

千真万确的做法是管理Form的FormClosing事件:

4 在父窗口关闭时销毁子窗口对象

鉴于须求在父窗口关闭是销毁子窗口对象,因而,在父窗口的闭馆动作FormClosed中加多调用子窗口f2的绝迹函数。

 private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            f2.Close();
        }  

子窗口类中加上的闭馆函数如下:

 public void Close()
        {

            this.Dispose();

        }

出处:


除此以外还会有风流洒脱种办法:

子窗体定义二个委托,父窗体实例化子窗体时注册子窗体的信托事件(具体效果是贯彻父窗口的控件变化卡塔尔国,子窗体关闭时调用事件措施。

父窗体

public void ShowPopWindow()
        {
            TestA sub = new TestA();
            sub.CloseWindow += new Action(sub_CloseWindow);
            sub.show();
        }

        void sub_CloseWindow()
        {
            //改变父窗体控件内容
        }

子窗体

public class TestA
    {
        public event Action CloseWindow;

        protected virtual void OnCloseWindow()
        {
            Action handler = CloseWindow;
            if (handler != null) handler();
        }

      //子窗体关闭事件
        private void CloseSubWindow()
        {
            OnCloseWindow();
        }
    }

出处:


听新闻说地方的印证,大家温馨完成谐和的职能,小编的作用实在异常粗略,就后生可畏行代码,释放能源,

Form2 fui = null;

private void button1_Click(object sender, EventArgs e)
        {
            if (fui == null)
                fui = new userUserInfo();
            fui.MdiParent = this;
            fui.FormClosed += delegate(object obj, FormClosedEventArgs arg) { fui = null; };
            fui.Show();
            fui.Activate();
        }

但必要小心,在 fui.FormClosed += delegate(object obj, FormClosedEventArgs arg卡塔尔 { fui = null; };中选择的参数,不要和开关事件中参数名相近,注意参数冲突。

出处:

2 通过开关来显示主窗口

  在按钮中需求完结的是窗口的突显

private void Config_Click(object sender, EventArgs e)
        {
            f2.Show();
        }

public delegate void FormClosingEventHandler(object sender, FormClosingEventArgs e);
public event FormClosingEventHandler FormClosing;

版权声明:本文由bob体育app发布于bob体育平台,转载请注明出处:WinForm的技巧(1 of n)窗口关闭的提示