Winform开发之窗体传值
	Winform的窗体之间的数据传递是开发的必备技术,下面介绍几种典型的传值方法
	1、构造函数传值,但这种方法是单向的(推荐)
	上代码,先传值
 private void button2_Click(object sender, EventArgs e)
        {            Form3 fr3 = new Form3("要传的值啊");            fr3.ShowDialog();
        }
	接值,对了,这里需要重载一个Form3的构造函数,然后将拿到的值显示出来
 public Form3(string canshu)
        {            InitializeComponent();
            label1.Text = canshu;
        }
	效果图,就是这么简单
	
	
	2、静态变量传值(不推荐)
	可以将静态变量申明在你需要的地方,比如一个单独类,或者Form中,比如我们在这里申明在Form2中
	 public static string xvalue;
	
	private void button2_Click(objectsender, EventArgs e)
	        {
	            xvalue = "要传的值啊xvalue";
	            Form3 fr3 = new Form3();
	            fr3.ShowDialog();
	        }
	
	先给赋值,然后在Form3中取值
	
	 public Form3()
	        {
	            InitializeComponent();
	            label1.Text = Form2.xvalue;//Form2实际也是个class,直接取静态值即可,如果静态变量xvalue定义在其他类中,即将Form2替换即可            
	        }
	
	效果图上
	
	3、通过共有属性传值
	首先在要打开的Form中创建一个共有属性,然后在调用窗口赋值即可。比如下面Form2启动Form3,即给Form3的yvalue传值
	(1)在Form3中定义共有属性
	
	public string yvalue {
	            get
	            {
	                returnlabel1.Text.ToString();
	            }
	            set
	            {
	                label1.Text = value;
	            }
	        }
	
	(2)Form2中启动Form3,并传值
	
	 private void button2_Click(objectsender, EventArgs e)
	        {          
	            Form3 fr3 = new Form3();
	            fr3.yvalue = "要传的值啊";
	            fr3.ShowDialog();
	        }
	
	4、通过Owner属性传值
	(1)在调用者Form2中申明一个公有变量,并赋值,设置需要启动的Form3的Owner
	
	 public string xvalue;
	        private void button2_Click(object sender, EventArgs e)
	        {
	            xvalue = "Form2要传的值";
	            Form3 fr3 = new Form3();
	            fr3.Owner = this;
	            fr3.ShowDialog();
	        }
	
	(2)启动窗体Form3中取值
	 private void Form3_Load(objectsender, EventArgs e)
	        {
	            Form2 fr2 = (Form2)this.Owner;
	            label1.Text = fr2.xvalue;
	        }
	这种方法实际是将Form2传给了Form3,因此Form3可以取到Form2的所有公有变量和属性。
	5、委托传值(推荐)
	委托传值主要用在子窗体给父窗体传值上,即上文的Form3给Form2传值
	(1)先在Form3中申明委托
	
	 public delegate void PutHandler(stringtext);
	        publicPutHandler putTextHandler;//委托对象
	        private void button1_Click(object sender, EventArgs e)
	        {
	            if(putTextHandler != null)
	            {
	               putTextHandler(textBox1.Text.ToString());
	            }
	        }
	
	(2)在Form2中绑定委托事件
	
	 public void getValue(string strV)
	          {
	             this.textBox1.Text= strV;
	         }
	      
	        private void button1_Click(object sender, EventArgs e)
	        {
	            Form3 fr3 = new Form3();
	            fr3.putTextHandler = getValue;
	            fr3.ShowDialog();         
	        }
	
	效果图
	
	
	本文来源(https://www.cnblogs.com/yieryi/p/4616688.html)侵删!