在c#中,有时候会出现需要在2个Form中进行数据传递的问题,具体的说就是:我们往往需要把Form2中TextBox,Label,ComBox等控件的值传递给Form1类使用,网上也有许多做法,说的有的比较难理解,这里介绍一种比较容易理解的做法。
假设我们在Form2中有TextBox1和TexbBox2两个控件,我们想通过点击Form1中的Button1来输入Form2中TextBox1和TexbBox2的值,通过点击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();
}
}
}