C#中不同窗口之间传递值的两种方法
2009-08-13 16:02
435 查看
在.net中不同窗口之间传值有很多种不同的方法,这里给出两种比较常用的方法:
项目中有两个窗体,Form1和Form2,要实现的效果是点击Form1中的Button1按钮实现TextBox1和TextBox2中的值相加,然后把这个相加的值传递给Form2中的TextBox1,并在TextBox1中显示出这个和值。
![](http://images.cnblogs.com/cnblogs_com/gisland/i.jpg)
方法一:通过为窗体类写属性来传递值
(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();
}
到这里,第二种方法也完成了,是不是觉得很简单?
项目中有两个窗体,Form1和Form2,要实现的效果是点击Form1中的Button1按钮实现TextBox1和TextBox2中的值相加,然后把这个相加的值传递给Form2中的TextBox1,并在TextBox1中显示出这个和值。
![](http://images.cnblogs.com/cnblogs_com/gisland/i.jpg)
方法一:通过为窗体类写属性来传递值
(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();
}
到这里,第二种方法也完成了,是不是觉得很简单?
相关文章推荐
- C#中窗口之间传递数据几种方法
- C#窗口之间数据的传递 方法
- iphone 使用委托(delegate)在不同的窗口之间传递数据
- 利用ajax实现前台javascript同c#后台MVC下的aspx.cs文件传递数据的两种方法
- C# 同一应用程序域不同线程之间的参数传递方式
- iPhone使用委托在不同的窗口之间传递数据
- 如何:了解向方法传递结构和向方法传递类引用之间的区别(C# 编程指南)
- android fragment传递参数_fragment之间传值的两种方法
- IOS开发使用委托delegate在不同窗口之间传递数据
- 【C#】delegate(委托) 将方法作为参数在类class 之间传递
- iphone 使用委托(delegate)在不同的窗口之间传递数据-转
- 父窗口和iframe子窗口之间相互传递参数和调用函数或方法(url中传参)
- IOS开发使用委托delegate在不同窗口之间传递数据
- javascript浏览器窗口之间传递数据的方法
- PowerBuilder窗口之间传递多参数的方法
- C#.NET常见问题(FAQ)-如何在不同窗体之间传递值
- Javascript 调用C# 代码并传递参数的两种方法
- iPhone使用委托在不同的窗口之间传递数据
- 了解向方法传递结构和向方法传递类引用之间的区别(C# 编程指南)
- C# Winform窗口之间传值的多种方法浅析