比如模态对话框有几个textbox控件,上面填的东西我要传递给主窗体,有没有什么比较专业的方法?以前我都是把模态对话框的textbox 改成public,这样显然不安全Form2 f2=new Form2();
if(f2.ShowDialog()==DialogResult.Ok)
{
String str=f2.textBox1.Text;//这时的f2已经关闭了,系统也可能正在回收,我觉得应该不安全吧?
}有什么专业的方法吗?特别是如果f2上的控件很多的话。。
if(f2.ShowDialog()==DialogResult.Ok)
{
String str=f2.textBox1.Text;//这时的f2已经关闭了,系统也可能正在回收,我觉得应该不安全吧?
}有什么专业的方法吗?特别是如果f2上的控件很多的话。。
控件很多的话可以通过属性或者方法把需要的数据封装一下,就不用直接访问控件了。一般只是需要数据,而不是控制控件。
TextBox tb = Application.OpenForms["Form1"].Controls["textBox1"] as TextBox;
tb.Text = "121211";另外可以通过委托+事件的方法来实现.
form1:
...
Form2 f2=new Form2(this);
...form2 closed:
((TextBox)this.Owner.Controls["textBox1"]).Text="传给form1的textbox1";
父窗体 F
在F1 中public event del chuanzhi;
public deleagate void del(string name);private btn_click( object sender, EventArgs e)
{
chuanzhi(Text1.text);
this.clsoe();
}在父窗体中private btn_click(object sender EventArgs e)
{
F f=new F();
f.chuanzhi+=new F.del(getvalue);
f.showDialog();
}
void getvalue( string a)
{
Textbox1.text=a;
}
父窗体 F
在F1 中public event del chuanzhi;
public deleagate void del(string name);private btn_click( object sender, EventArgs e)
{
chuanzhi(Text1.text);
this.clsoe();
}在父窗体中private btn_click(object sender EventArgs e)
{
F f=new F();
f.chuanzhi+=new F.del(getvalue);
f.showDialog();
}
void getvalue( string a)
{
Textbox1.text=a;
}