在.net中不同窗口之间传值有很多种不同的方法,这里给出两种比较常用的方法:
项目中有两个窗体,Form1和Form2,要实现的效果是点击Form1中的Button1按钮实现TextBox1和TextBox2中的值相加,然后把这个相加的值传递给Form2中的TextBox1,并在TextBox1中显示出这个和值。
方法一:通过为窗体类写属性来传递值
(1),在被传递值的窗体(这里是Form2)类里面写属性
private string str;//定义的私有变量
public
string
STR
//
为窗体Form2定义的属性
{
get
{
return
str; }
//
读
set
//
写
{
str
=
value;
}
}
(2),在Form2中把读到的属性赋给Form2中的TextBox1文本框
private void Form2_Load(object sender, EventArgs e)
{
textBox1.Text
=
str;
}
(3),在Form1中的Button1的Click点击事件中写如下代码
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2
=
new
Form2();
int
a, b, sum;
if
(
int
.TryParse(textBox1.Text,
out
a)
&&
int
.TryParse(textBox2.Text,
out
b))
{
sum
=
a
+
b;
frm2.STR
=
sum.ToString();
frm2.ShowDialog();
}
else
{
frm2.STR
=
"
输入的为非数字型字符串
"
;
frm2.ShowDialog();
}
}
大功告成,在你的机子上运行下,是不是成功了?
方法二:通过为窗体类写构造函数来传值
(1),在被传递值的窗体(这里是Form2)类里面写其构造函数,注意原来的构造函数不要修改它,我们在代码块里面直接加入以下代码即可。
string str1, str2;//定义两个私有变量
public
Form2(TextBox tb1, TextBox tb2)
//
定义构造函数,tb1和tb2对应Form1中的TextBox1和TextBox2,以便传值
{
InitializeComponent();
//
一定要加上。。。
str1
=
tb1.Text.ToString();
//
取文本框值
str2
=
tb2.Text.ToString();
int
a, b, sum;
if
(
int
.TryParse(str1,
out
a)
&&
int
.TryParse(str2,
out
b))
//
检查文本框里面的值是否可转化为int型,返回值为bool型,如果为真,则转化为整型a和b
{
int
sum
=
a
+
b;
textBox1.Text
=
Convert.ToString(sum);
}
else
{
textBox1.Text
=
"
输入的为非数字型字符串
"
;
}
}
(2),在Form1中的Button1的Click事件中写如下代码
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2
=
new
Form2(textBox1, textBox2);
frm2.ShowDialog();
}
到这里,第二种方法也完成了,是不是觉得很简单?