相信这个问题是个大家都已经碰到很多的问题,在CSDN上也经常有人问及到相关的问题,本人这段时间有在做winform的相关程序,所以也经常遇到这类的问题,现在将问题的解决办法总结了一下,希望可以有助于大家理解和学习! 1 全局变量 这个最简单,只要把变量描述成static就可以了,在form2中直接引用form1的变量,代码如下: 在form1中定义一个static变量public static int i= 9 ; Form2中的钮扣按钮如下: private void button1_Click(object sender, System.EventArgs e) {textBox1.Text = Form1.i.ToString();} 2 父窗口传值给子窗口(Form1为主窗体,Form2为子窗体) 代码如下: Form1中的代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnShow_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); //父窗体传值给子窗体 Form1 form1 = new Form1(); form2.String1 = "成功传值给Form2窗体!"; form2.SetValue(); form2.ShowDialog(); } Form2中的代码: private string String; public string String1 { get { return String; } set { String = value; } } public void SetValue() { this.lblText.Text = String1; } 3 父窗口传值给子窗口(Form1为主窗体,Form2为子窗体) Form1中的代码: private string strValue; public string StrValue { get { return strValue; } set { strValue = value; } } private void btnShow_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); //子窗体返回值给父窗体 form2.Owner = this;;//重要的一步,主要是使Form2的Owner指针指向Form1 form2.ShowDialog(); MessageBox.Show(StrValue);//显示返回的值 } Form2中的代码: private void btnclose_Click(object sender, EventArgs e) { Form1 form1 = (Form1)this.Owner;//把Form2的父窗口指针赋给lForm1 form1.StrValue = "子窗体成功返回值给父窗体!";//使用父窗口指针赋值 this.Close(); } |