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

        在.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();
        }
                到这里,第二种方法也完成了,是不是觉得很简单?

posted @ 2009-08-13 16:02  爱生活,爱GIS  阅读(1169)  评论(1编辑  收藏  举报