在WinForm窗体设计中,父子窗体之间的数据传递有很多方法,比如以下网上的一个例子:
parent_button1_click(..)   
  {   
    ChildForm   form=new   ChildForm(根据参数传递);   
    form.Property1=11;根据属性传递   
     form.SetCurrentValue(22);//用方法传递   
     DialogResult   result=form.ShowDialog();得到DialogResult   
    string selectedValue=form.TheValue;//使用属性得到返回值..   
  }   
    请问以上哪个方法是占用系统资源最少的最优选择呀??
    最近又想到,如果使用文件流或二进制流,也可以将进行数据传递.比如先将父窗体的数据写入到一个新文件中,然后由子窗体就可以从这个文件中读取数据了,从而间接实现数据的传递.
    但是出现的问题是这个文件的类型最好是选哪个呢?而且与前面的几种方法相比,这个方法又有什么优缺点呢??
 

解决方案 »

  1.   

    窗体之间传递的数据会很大,很占资源吗?
    如果你觉得窗体之间要传递的参数大到需要用文件系统,用数据库来来间接传递的话,那我觉得你所选择的要传递的对象很可能是错误的。比如你觉得窗体之间需要传文件,其实考虑一下正确的参数是不是因该是文件的url呢?如果你觉得要传递一个非常大的DataSet,那么实际上是不是应该传递一个查询条件呢?二进制流是可以用来传递的,但是被传递的对象需要进行序列化/反序列化,有性能问题,考虑一下吧form.Property1=11;根据属性传递    
    form.SetCurrentValue(22);//用方法传递 
    用属性和用方法应该没区别,因为属性最终被编译成方法了(两个方法:get_xxx和set_xxx)。   至于构造函数
    ChildForm(根据参数传递);
    在资源占用上跟前面的应该没什么差别,只是让类的初始化时间变长了点(多初始化一个变量)。不过这样做有一个不好的地方,就是不够灵活。一般建议将类初始化所必须的变量才放进构造函数中进行传递,其它那些可以根据需要进行传递的值尽量通过属性或者方法完成。
      

  2.   

    你可以看看我的博客
    http://www.cnblogs.com/virusswb/archive/2008/03/31/1131276.html