我有个窗体类,窗体中有个数据显示列表Datagridview控件
主要完成显示我传输及更新数据的任务。
而传输数据的方法是另一个类来完成,我想在传输类中完成对窗体类中的Datagridview的某一列完成更新(记录数列)。
我在窗体类中使用来代理。
在传输类中实例化了一个窗体类的对象,结果在控制Datagridview时,Datagridview的行数总是0行。我想是由于我实例化了一个窗体类的对象造成的。
所以我在调用传输方法时想将窗体类的当前对象传输过去,(我使用this),但是在执行传输方法的时候程序无故出现死的现象,等一分钟之后缓过来程序无法进入断点,莫名结束。不知道是什么原因。
后来我想采用另一个办法,不将窗体对象作为参数,而改Datagridview作为参数,可是在数据类中没有Datagridview类,不知道该怎么引用才能使用Datagridview类。

解决方案 »

  1.   

    理论上你的方法没有错误,虽然不是什么高明的方法,但是还是可以的。在传输类中实例化了一个窗体类的对象,这个方法肯定行不通的。传参应该没有问题,至于调用传输累类出错应该和你的代码有关,是否使用线程等等。我考虑你是想通过UI显示传输中的信息,对吧,其实这种需求很普遍的,应该采用委托完成
    1、在传输类中定义委托事件(这些委托就是为了传递当前的传输信息给UI)
    2、在UI中实例化传输类,并挂接传输类的委托
    3、在UI中实现这些委托,传输类中执行这些委托,并传给UI具体的数据,UI只负责显示他们。
      

  2.   

    UI子线程不能操纵有UI主线程创建的控件参考Control。invoke(),百度或谷歌一下,太多的例子还有一个折中的方法,Control有一个静态属性(bool类型的)给他赋值为false(好像是false),就可以在子线程中随意方法任何控件(。net 2.0 以上版本有)