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

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

2009-08-16 16:47:18|  分类: 面试相关 |  标签: |字号 订阅

  在.net中不同窗口之间传值有很多种不同的方法,这里给出两种比较常用的方法: 
        项目中有两个窗体,Form1和Form2,要实现的效果是点击Form1中的Button1按钮实现TextBox1和TextBox2中的值相加,然后把这个相加的值传递给Form2中的TextBox1,并在TextBox1中显示出这个和值。
C中不同窗口之间传递值的两种方法 - aspnetshop - aspnetshop

        方法一:通过为窗体类写属性来传递值
                (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 @ 2011-10-07 13:20  peterlee  阅读(4414)  评论(0)    收藏  举报