我在winfrom当中父窗中有一个datagridview进行数据绑定,利用事件机制进行刷新父窗体中的数据。在子窗体里面进行触发此事件,来刷新父窗体的数据。现在问题就是:已调用了事件里面的刷新的方法。但是父窗体的datagridview数据并没有进行更新,数据库当中已进行更新过。不知是什么问题。后来进行过调试,只要调试一下,再进入到这个父窗体的时候,父窗体里面的数据已更新过来。如果不进行调试就老是不进行更新。请教了! 
我现在这种情况不是没有进入到重新绑定的方法当中去,而且数据已经在数据库当中进行更新过了。就是没有及时地显示在我的父窗体的datagridview控件上,我试过拖动一个父窗体,我以为是皮肤的刷新问题。结果还是不行的。数据在父窗体没有及时的更新过来。必须要在父窗体当中做一个刷新的按钮点击一下,数据就显示出来了。很是奇怪。不明白是什么原因导致的。大家一起来讨论下!

解决方案 »

  1.   

    确实这种情况,我也碰到过后来我在窗体后面加了个.Refresh()问题解决
      

  2.   

    在你要更新数据的Activated事件内编写更新数据的方法
      

  3.   

    刷新的时候重新设置一下DataSourse
      

  4.   

    你是通过什么方式刷新父窗体的dgv的,是通过传对象吗?
      

  5.   

    用.Refresh()方法不好用,LZ说的是不同窗体之间,在A窗体修改完值以后,在B窗体要同时显示出来最新值,我刚试了试,如果利用.Refresh()方法的话,得新建一个B窗体的对象                B b = new B();
                  b.Refresh();这个方法不好用。我觉用窗体的Activated事件行,也好用。
    在该时间内,填入重新加载DGV代码在A窗体修改完值以后,只要激活B窗体,B窗体的数据就改过来了不过这种方法又好像不太合适,请大家讨论讨论,到底有什么方法才能跨窗体修改值呢??????
      

  6.   


    Refresh()方法我试过了。我是放在数据进行重新绑定的那个方法当中。不过还是不行,这位兄弟请问你的Refresh()方法是写在那个方法里面呢,才解决了你的问题啊,
      

  7.   

    Activated事件当中我想好像也有道理。不过我现在试一下先,不知行不行,我之前是通过调用事件订阅来进行更新重新绑定数据的。
      

  8.   


    这样也是不行的,现在问题是数据已更新到数据库当中去了。就datagridview的数据源里面也有了最新的数据 (我是通过调试发现的数据源的数据是已更新过来了,)不过就是不会显示最新的数据(即修改后的数据 ) 在页面上来。到现在为止我还没有找到问题的根源在那里,所以一直没法解决这个问题。大家出来讨论一下吧。
    我是利用模式化窗体的。问题详细说明如题所示。
      

  9.   

    LZ这样做可解决
     A  a= (A)Application.OpenForms["A"];
                    a.UseDB();   // UseDB是你用来显示datagridview数据的方法,在另一个窗体中,
                                     这里A指的便是另一个窗体,也就是说在B窗体中更新了数据,后添加这段代码
                    a.Activate();
                    this.Close();
      

  10.   

    目前我的解决方法只有 重画datagridview,绑定。我也查了很久没有找到更好的解决办法。
      

  11.   

    我也遇到这个问题了,我用对DataGridView重新绑定数据的方法解决的。
    在父窗体A中,把对DataGridView数据绑定的代码写成单独的一个Public方法,如:
     Public void dataShow(){...}
    并且,在父窗体A中打开子窗体B的语句是:
    B b=new B();
    b.ShowDialog(this);
    在子窗体B中,修改完数据后,显示父窗体的对象,再重新调用一次父窗体中的数据绑定方法。如:
    A a=(A)this.Owner;
    a.dataShow();