我有一个A窗体,b窗体 c窗体
①a窗体里边有一个Groupbox    groupBox1.Controls.Add(b) groupbox控件添加了b窗体
②b窗体有一个DataGridView    DataGridView绑定了数据里边的一个表(T_item)的数据
③b窗体有一个按钮Button1     Button1 弹出c窗体 c.show()
    所以你看到的界面就是a窗体  b窗体是在a窗体的Groupbox里边,c窗体弹出的位置是在a窗体外边,不知道我这样表达大家能理解不
现在的问题是当我在c窗体上表T_item表进行了修改 删除操作之后  a窗体上Groupbox 里边的b窗体上的数据没有刷新 我的代码如下
b窗体
 public b()
        {
            InitializeComponent();
            GridViesDB();//窗体加载之后就直接绑定Datagridview 
        }当我c窗体上要操作关闭c窗体的时候 代码如下
  ;
           if (DialogResult.Yes == MessageBox.Show("是否关闭窗体", "是否关闭窗体", MessageBoxButtons.YesNo))
           {
               b bchuangti =new b();
            //因为b窗体加载的时候就绑定DataGridVIEW 所以只到这一步就可以了,我调试了,执行到这里的时候   DataGridVies 重新绑定了,
             
               this.Close();
           }我现在就是想当我对数据库表T_item进行修改删除操作之后,我想让a窗体所显示的DataGridview刷新数据

解决方案 »

  1.   

    一楼的大哥,你的 意思是不是说用timer 定时的去刷新a窗体?
      

  2.   

    既然C窗体是通过B窗体打开的。那试试这样。在C中定义一个变量public bool flag = false;
    如果C中数据有变化,则修改flag = true;
    然后B窗体中:
    C c = new C();
    c.Show();
    然后定时检查c.flag是否为true,是则刷新,否则不管。
    刷新后把c.flag 重置为false
    不知道是否可行。
    PS:既然c是弹出框,干嘛非要在c中删除后就刷新b的数据。c直接做成模式窗口,不允许再次操作b中数据,等关了后再刷新不是更好?
      

  3.   

    代码中 是这样的
    C c = new C();
    c.ShowDialog();
    是这样的,
    三楼的哥哥,你可能没明白我的意思,当我c窗体关闭的时候我是刷新了b窗体的,也就是说当我重新刷b窗体的时候DataGridview绑定代码也重新执行了一次, 所以我想当前显示出来的数据 并没有刷新,是因为b窗体本身刷新了,但是显示b窗体的a窗体没有重新绘制。 问题就在于我不能重新的让a窗体加载一次, 我的项目首先执行的页面就是a窗体,但是在a窗体加载的时候我先让 另外的一个登陆窗体显示了,所以 如果我在c窗体中让a窗体重新加载的话,登陆窗体也会显示出来的,
      

  4.   

    你的意思是,在c窗体上改了数据,但是A窗体里的B窗体列表数据没有改变是么
    A窗体应该有添加B窗体的方法吧,不能委托调用?
      

  5.   

    C窗体委托操作,刷新B窗体
    a窗体 remove删除,重新添加B窗体
      

  6.   

    WinForm的这种刷新数据是 采用的回调函数来做的,也就是平时我们所说的事件委托
    首先在你的编辑页面定义:
     
    //声明一个委托
            public delegate void SendParts(PartsEntity Parts);
            public event SendParts sendparts;//所要委托的事件然后在你点击保存或则提交的时候
         if (EDRS)
                            {
                                //MessageBox.Show("修改成功!", "SZGDAS Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                MessageBox.Show(_Message.strMessage4, "SZGDAS Message", MessageBoxButtons.OK, MessageBoxIcon.Information);                            this.sendparts(Parts);//激发事件,刷新列表
                                this.Close();
                            }
      

  7.   

    弹出窗体的构造函数设置为private建立一个可传入 data 的构造函数,就可以刷新了