日期:2014-05-19  浏览次数:20874 次

窗体间数据交互的问题?
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的对象,已经存在这个对象了,还传什么?