窗体间数据交互的问题?
Winform程序
form1点击弹出form2,form2是一个客户挡案,选择相应的客户,即显示在from1中
现在采用的方法:
加form2的构造函数
Private Form1 form1;
public Form2(Form1 f)
{
InitializeComponent();
this.form1=f;
}
当选择后
form1.select(选择的值数组);
也可以
private deletege selectCus(string[] s); //?????
selectCus sel=form1.select;
sel(); //也是调用方法
/---------------form1中--------------
//这个public过程设置选择的值
public void select(string[] s)
{
//这里设置选择的值
}
不知道说明白没有,也就是把form1的实例传递给form2,在form2中调用赋值的方法
问题:
现在大概有10多个窗体要调用form2,选择客户,要按这种方式,岂不要加10多个构造函数,有简便的方法吗?
用委托调用我觉得和用实例直接调用没有什么区别?
------解决方案--------------------不是简单,是写的太乱。
------解决方案--------------------数据交互要么构造函数,要么全局变量。你要from2影响from1,用委托+invoke吧
------解决方案--------------------其实就是Form1中打开Form2选择客户,然后将选择结果返回到Form1对吧?
这样就容易了,将Form2做成模态窗体,再用属性包装选中的客户编号和名称,然后在Form1中让Form2.ShowDialog(),取得返回值为OK的时候访问属性即可
------解决方案--------------------传入窗体参数,或者使用消息通知
------解决方案--------------------我就不太明白什么叫传递窗体实例
form1中很自然需要创建form2的对象,已经存在这个对象了,还传什么?