现在有A,B连个窗体
A窗体load的时候,从数据库读取表中的某一项数据并显示.A窗体还有一按钮,click触发new B窗体并显示B窗体事件
B窗体持有A窗体的引用,实现从TextBox中读入一项数据,并在数据库中替代A窗体读取的那项数据.现在我想当B窗体update数据成功后,A窗体显示的数据也同时刷新我查了下资料,大概是在b窗体中调用a窗体的Refresh()方法,但是我怎么搞也没用,根本没反应我自己的做法是B窗体在把数据update到数据库的同时,修改A窗体显示数据的TextBox控件的值
这样虽然效果是实现了,但是我觉得不够妥善有没有人知道,如何在B窗体update数据成功后,马上让A窗体重新读取数据库,刷新显示的数据项.

解决方案 »

  1.   

    能说详细点吗?我C#是刚刚接触,委托是不是就是java中的代理啊?具体怎么实现的?
      

  2.   

    在B窗体里增加委托
       public delegate void RefreshLoadView();        public event RefreshLoadView RefreshView;但你需要刷新的时候调用     
                if (RefreshView != null) RefreshView();当你窗体A在new B的时候
         B.RefreshView += new RefreshLoadView(B_RefreshView);
           
            void B_RefreshView()
            {
                
            }            
      

  3.   

    是否是在B窗体关闭后A窗体重新加载数据?如果是这样那B.ShowDialog();后加上刷新代码即可啊....
      

  4.   

    如果是B不关闭要改A的TextBox那把A当参数传入B,
    A _a = null;
    B b= bew B(A){_a = A;},然后操作_a就可以了吧....
      

  5.   

    学习委托,与事件,其实类似于SQL中触发器,让别人来做!!!
      

  6.   

    web form or win form ?
      

  7.   

    A窗体:
       public void 读取显示数据()
       {
          ……
       }   B窗体 frm = New B窗体();
       frm.afrm = this;
       frm.show();B窗体:
       public A窗体 afrm;   这样在B窗体里,便可调用A窗体里的读取显示数据()方法和public的控件了。
       注:读取显示数据()方法里涉及到的控件,要将其控件设为public.
      

  8.   

    (textBox)Application.OpenForms["A窗体"].Controls["控件"].Text="ddd"