日期:2014-05-18  浏览次数:21296 次

c#中两个窗体之间的数据的传递?
有两个窗体:form1中有个TextBox1,form2中有TextBox2,在form1中点击按钮时,得到form2中TextBox2的值??

------解决方案--------------------
在构造函数中传递,或者设置为static 就可以直接访问
------解决方案--------------------
楼主请看:
http://blog.csdn.net/lzt7/archive/2006/12/13/1441615.aspx
------解决方案--------------------
不好意思,我错了
在实例form1或调用方法的时候,将form2的实例传入
------解决方案--------------------
1 构造函数
2 委托
Form1
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.paraDelegate = this.showpara;
frm.Show();
}
void showpara(string s)
{
label1.Text = s;
}

Form2
public ParaTest paraDelegate;
private void button1_Click(object sender, EventArgs e)
{
if (paraDelegate != null)
{
paraDelegate(textBox1.Text);
}
this.Close();
}

------解决方案--------------------
方法多
winform?
1.用备用空间
'生成
dim f1 as new form1
dim f2 as new form2
'互相联系
f2.tag = f1
f1.tag= f2
'f1(form1)中代码
...
me.tag.textbox2.text = "f2中的textbox2 "
...
其他方法略
------解决方案--------------------
我来说两句:
1)如果是一个主窗体与一个副窗体之间传信息,那么可以用构造函数,代码如下:
窗体1:
namespace WindowsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Form2 aform2; //声明一个FORM2字段

private void button1_Click(object sender, EventArgs e)
{
aform2 = new Form2(this);
//调用重载的FORM2构造函数, 该构造函数设定了form2中的aform1字段为“this”
aform2.label1.Text = "this is set from form1 "; //窗体2中lable1设为公用
aform2.Show();
}
}
}

窗体2:

namespace WindowsApplication2
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private Form1 aform1; //声明FORM1字段
public Form2(Form1 myform1) //重载一个构造函数
{
InitializeComponent();
this.aform1 = myform1; //通过该构造函数,设定aform1字段值
}
private void button1_Click(object sender, EventArgs e)
{
this.aform1.label1.Text = "this is set from2 "; //控制form1 form1.label1设为公用
}
}
}
2)如果是一个主窗体与多个副窗体,则应在主窗体的Designer.cs中实例化副窗体,如这样:
public ShiFeiResolution.VegetableForm vegetableform = new VegetableForm();//注意它们是主窗体的属性!!!
public ShiFeiResolution.XiaoMaiYuMiForm XiaoMaiYuMiform = new XiaoMaiYuMiForm();
public ShiFeiResolution.FruitForm fruitForm = new FruitForm();
这样可在主窗体中直接应运。
3)如果是多个主窗体与一个副窗体之间传递信息,比如说点击任何一个主窗体中的按纽,就会弹出同一个副窗体(是同一个,而不是同样的窗体),就要在主窗体中这样写:
GetSoilInfo getinfo; //相当于一个temp变量
getinfo = (GetSoilInfo)Application.OpenForms[ "GetSoilInfo "];

if (getinfo == null)
getinfo = new GetSoilInfo();//是否存在,如不存在,则创建
if (checkBox2.Checked == true) getinfo.Show();