您的位置:首页 > 编程语言 > C#

C#中不同窗口之间传递值的两种方法

2009-08-13 16:02 435 查看
在.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();

}
到这里,第二种方法也完成了,是不是觉得很简单?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: