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

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

        方法一:通过为窗体类写属性来传递值
                (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();
        }
                到这里,第二种方法也完成了,是不是觉得很简单?

转载于:https://www.cnblogs.com/gisland/archive/2009/08/13/1545380.html

你可能感兴趣的:(C#中不同窗口之间传递值的两种方法)