当前位置: 代码迷 >> C# >> c# Form之间进行值传递有关问题(参考)
  详细解决方案

c# Form之间进行值传递有关问题(参考)

热度:50   发布时间:2016-05-05 05:00:25.0
c# Form之间进行值传递问题(参考)

在c#中,有时候会出现需要在2个Form中进行数据传递的问题,具体的说就是:我们往往需要把Form2中TextBox,Label,ComBox等控件的值传递给Form1类使用,网上也有许多做法,说的有的比较难理解,这里介绍一种比较容易理解的做法。

假设我们在Form2中有TextBox1TexbBox2两个控件,我们想通过点击Form1中的Button1来输入Form2TextBox1TexbBox2的值,通过点击Form2中的Button2来计算这2个值的和,结果放在Form1中的TextBox1中,怎么做呢。

我们知道,Form类一般是由两部分组成的,一部分在Form2.cs里,一部分在Form1.Designer.cs里,且Form2.Designer.cs对控件进行初始化的部分是私有的,也就是说,Form控件只能通过在Form类内进行访问,不能在其他类中直接访问。

属性是这样的成员:它们提供灵活的机制来读取、编写或计算私有字段的值。可以像使用公共数据成员一样使用属性,但实际上它们是称为“访问器”的特殊方法。这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。

所以我们可以通过属性的方式来访问。

附简单代码如下

Form2.cs:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace FormValues

{

    public partial class Form2 : Form

    {

        public Form2()

        {

           InitializeComponent();

        }

        public TextBoxGetTB1

        {

            get { returntextBox1; }

        }

        public TextBoxGetTB2

        {

            get { returntextBox2; }

        }

 

        private voidbutton1_Click(object sender, EventArgs e)

        {

            this.Visible = false;

        }

    }

}

Form1.cs:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace FormValues

{

    public partial class Form1 : Form

    {

        Form2 Frm2 = new Form2();

        public Form1()

        {

           InitializeComponent();

        }

 

        private voidbutton1_Click(object sender, EventArgs e)

        {

            

           Frm2.Show();

        }

 

        private voidbutton2_Click(object sender, EventArgs e)

        {

            double a= Convert.ToDouble(Frm2.GetTB1.Text);

            double b= Convert.ToDouble(Frm2.GetTB2.Text);

           textBox1.Text = (a + b).ToString();

        }

    }

}

 

 

 

  相关解决方案