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窗体之间的传值可以分为主窗体向子窗体传值,以及子窗体向父窗体传值。

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

   public string TextValue
{
get
{
return this.label1.Text;
}
set { this.label1.Text = value; }
}

属性

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

form2中接收:

        private void button1_Click(object sender, EventArgs e)
{
if(AfterText!=null)
{
AfterText("");
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();

上一篇:【linux】who&&w


下一篇:ROM与RAM