第1个回答 推荐于2017-09-01
1、先在Form2中定义一个成员变量和一个属性如下:
private string form2zhi = null;
public string Form2ChuanZhi
{
get
{
return form2zhi;
}
}
2、再在Form3中定义一个成员变量和一个属性如下:
private string form3zhi = null;
public string Form3ChuanZhi
{
set
{
form3zhi = value;
}
get
{
return form3zhi;
}
}
3、在Form2加了一个bunton命名为btn_ChuanZhi
4、双击btn_ChuanZhi在这个事件中写入以下代码(
Form3 form3 = new Form3();
form3.Form3ChuanZhi = form2zhi;//将值传过去
form3.Show();
5、在Form3中托一个Label控件,并双击Form3窗体Form3_Load事件中写入以下代码:
label1.Text = form3zhi;//为了显示值已经传过来了
6、给Form2中的form2zhi赋值,双击Form2窗体在Form2_Load中写入以下代码即可实现:
form2zhi = "将我传过去!";
第2个回答 2008-11-18
你在父窗体中实例化Form2
Form2 f2= new Form2();
f2.MdiParent=this;
f2.Show();
这样是打开在父窗体中打开Form2
你可以把Form2作为参数传递到Form3
如下在父窗体中打开Form3
Form3 f3= new Form3(f2);
f3.MdiParent=this;
f3.Show();
你可以在窗体3中构造方法中接受f2
Form2 f2= null;
public Form3(Form2 form)
{
f2 = form;
}
现在你就可以在窗体3利用f2窗体对象索取f2窗体中的属性或方法了,但是f2窗体的属性和方法必须为public
第3个回答 2008-11-15
这里有两个方法可以解决你窗口传值
一、实体类
封装实体来传值
private int userId;
public int UserId
{
get { return userId; }
set { userId = value; }
}
二、把控件改成public
Form1.Designer.cs
private System.Windows.Forms.TextBox textBox1;
把这里的private改成public
你就可以直接在其他窗口使用了。
第4个回答 2008-11-19
如果是MDI的话,建议使用一个静态的Context来实现传值,如果使用将一个Form的控件设置为public会造成很大程度的混乱,在你维护的时候就知道了。
在工程中定义一个类如下(为了提高性能使用哈希表):
public class Context
{
public static HashTable ContextData = new HashTable();
}
在任何一个Form上都可以通过以下的代码访问:
// 将Form1数据 this.txtSampleKey1.Text存入上下文供其他窗体使用。
if( !Context.ContextData.ContainKey("Key1"))
{
Context.ContextData.Add("Key1",this.txtSampleKey1.Text);
}
else
{
Context.ContextData.ContainKey["Key1"] = this.txtSampleKey1.Text;
}
//在Form2中使用Form1的this.txtSampleKey1.Text
this.txtTarget.Text = Context.ContextData.ContainKey["Key1"].ToString();