• Winform单例模式与传值


    单例模式(singleton)的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

    在多窗体界面中,如果要加入一个“关于”的窗体,用于显示软件的信息,那么可以用到单例模式,因为“关于窗体”类只需一个实例,下面是实例的代码:

    "关于窗体":

    1.在vs中建立winform项目,并建立两个窗体form1和form2

    Form1单例:

      private static   Form1 _instance = null;
            public Form1()
            {
                InitializeComponent();
              
            }
            public static  Form1 GetInstance()
            {
               if(_instance==null || _instance.IsDisposed)
               {
                   _instance = new Form1();
               }
               return _instance;
            }

    Form2单例和Form1相同。

    2.窗体传值

    winform窗体之间的传值可以分为主窗体向子窗体传值,以及子窗体向父窗体传值。

    父窗体向子窗体传值:一直采用属性或者构造函数的方法,这里讲述属性的方法。首先需要定义一个属性

    1   public string TextValue
    2         {
    3             get
    4             {
    5                 return this.label1.Text;
    6             }
    7             set { this.label1.Text = value; }
    8         }
    属性

    我这里是传递一个label的值。

    form2中接收:

            private void button1_Click(object sender, EventArgs e)
            {
                if(AfterText!=null)
                {
                    AfterText("10");
                    this.label1.Text = Form1.GetInstance().TextValue;
                }
              
            }
    接收属性值

    值得注意的是采用单例模式后,在form2中调用form1的方法。

    子窗体向父窗体传值:一般采用事件或者委托来执行,这里采用委托的方法。

    在form2中定义委托:      public Action<string> AfterText {get;set;}

    执行委托:   AfterText("10");

    from1在打开form2的时候,需要注册委托:

     Form2 form2 = Form2.GetInstance();
                form2.AfterText = new Action<string>(this.CalculFinish);
                form2.Show();

  • 相关阅读:
    bzoj2055: 80人环游世界(有源汇上下界可行最小费用流)
    bzoj千题计划158:bzoj2406: 矩阵(有源汇上下界可行流)
    bzoj1220:[HNOI2002]跳蚤
    [USACO4.3]逢低吸纳Buy Low, Buy Lower
    hdu 3488 Tour
    [网络流24题] 餐巾计划
    zkw费用流模板
    [网络流24题] 最长k可重区间集
    bzoj千题计划156:bzoj1571: [Usaco2009 Open]滑雪课Ski
    Codeforces Round #449 C. Willem, Chtholly and Seniorious (Old Driver Tree)
  • 原文地址:https://www.cnblogs.com/ggz19/p/4463434.html
Copyright © 2020-2023  润新知