1、構造函數傳值,但這種方法是單向的(推薦)
private void button2_Click(object sender, EventArgs e)
{
Form3 fr3 = new Form3("要傳的值啊");
fr3.ShowDialog();
}
這里需要重載一個Form3的構造函數,然后將拿到的值顯示出來
public Form3(string canshu)
{
InitializeComponent();
label1.Text = canshu;
}
021732191295538.png
2、靜態變量傳值(不推薦)
以將靜態變量申明在你需要的地方,比如一個單獨類,或者Form中,比如我們在這里申明在Form2中
public static string xvalue;
private void button2_Click(object sender, EventArgs e)
{
xvalue = "要傳的值啊xvalue";
Form3 fr3 = new Form3();
fr3.ShowDialog();
}
先給賦值,然后在Form3中取值
public Form3()
{
InitializeComponent();
label1.Text = Form2.xvalue;//Form2實際也是個class,直接取靜態值即可,如果靜態變量xvalue定義在其他類中,即將Form2替換即可
}
021738469365264.png
3、屬性傳值
首先在要打開的Form中創建一個共有屬性,然后在調用窗口賦值即可。比如下面Form2啟動Form3,即給Form3的yvalue傳值
(1)在Form3中定義共有屬性
public string yvalue {
get
{
return label1.Text.ToString();
}
set
{
label1.Text = value;
}
}
(2)Form2中啟動Form3,并傳值
private void button2_Click(object sender, 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(object sender, EventArgs e)
{
Form2 fr2 = (Form2)this.Owner;
label1.Text = fr2.xvalue;
}
這種方法實際是將Form2傳給了Form3,因此Form3可以取到Form2的所有公有變量和屬性。
5、委托傳值(推薦)
委托傳值主要用在子窗體給父窗體傳值上,即上文的Form3給Form2傳值
(1)先在Form3中申明委托
public delegate void PutHandler(string text);
public PutHandler 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();
}
031016108864799.png