有两个窗体A,B    B显示的数据随着A的改变而改变当A窗体更新时,  B窗体要同时更新
请问代码应该怎么写啊

解决方案 »

  1.   

    在A窗体里定义B窗体的一个变量,并把当前B窗体的对象赋值给A窗体定义的B变量
    在A窗体刷新时,调用B对象刷新B如在A窗体里定义
    B _b = b; //b为B窗体的对象A窗体刷新后调用
    _b.RreshData();在B窗体里定义刷新方法
    public void RreshData()
    {
       //刷新B的数据
    }
      

  2.   

    什么显示的?DataGridView一类的控件 ?调用控件的DateBind()事件
      

  3.   

    在窗体B
    public event EventHandler StatusChanged;
    在窗体A
    newForm.MdiParent = this;
                    newForm.StatusChanged += new EventHandler(
                        (sender1, e1) =>
                        { this.Label.Text = "Communication Status: " + newForm.strStatus; }
                    );
                    newForm.FormClosed += new FormClosedEventHandler(
                        (sender2, e2) => { newForm = null; }
                    );
                    newForm.Show();
      

  4.   

    使用委托:
    B窗体:
            private void TSMISystem_Click(object sender, EventArgs e)
    {
            frmUserSet frmUser = new frmUserSet(false);
               frmUser.OperUsersInfor = this.OperUsersInfor; // 操作信息回调
                 frmUser.ShowDialog();
    }
            private void OperUsersInfor(bool bsign, string phone, string name)
            {
                // 执行更新
      Console.WriteLine(string.Format("{0} {1} {2}", bsign, phone, name));
            }
    A窗体(frmUserSet实例):
    // 创建委托
            public Action<bool, string, string> OperUsersInfor;
            private void btnDgvOper_Click(object sender, EventArgs e)
            {
    // 执行操作 // 回调操作信息
                 if (OperUsersInfor != null)
                        OperUsersInfor(false, "12345", "hello");
            }