现在有一个为了改变主窗口中的一个控件的属性子窗口,怎么样在不关闭该打开的子窗口的条件下,让父窗口知道它的控件的属性已经被改变,并可以看到改变后的结果.

解决方案 »

  1.   

    这样写:
    在A窗口:
    Form B =new Form();
    B.ShowDialog(this.DataGrid);//把A窗口的DATAGRID传到B窗口
    在B窗口:
    1.建立一个DATAGRID对象 private DataGrid DG;
    2.改写B窗口的构造函数
    public FormB(DataGrid dg)
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent();
    DG=dg;
    //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    }
    3.这样就可以在B窗口对DG操作,但实际上是对A窗口的DATAGRID造作
      

  2.   

    参见
    http://community.csdn.net/Expert/topic/4129/4129521.xml?temp=.4960596
      

  3.   

    设置父窗口的那个字段或者属性为public,子窗口直接调用修改
      

  4.   

    回复: lr2651(戎 Waiting For Star) 我要实现的是子窗口改变了,父窗口的控件属性立即也改变,但是子窗口不关闭.
    你所说的好像不行,我是通过主窗口的一个函数来打开子窗口的,因为子窗口没有结束(关闭),也就是说主窗口打开子窗口的函数还没结束,怎样会触发主窗口去更新它的控件的属性呢?莫非要用到多线程,但是也难啊!!!
      

  5.   

    在父窗口中设一个public static void ()
    在子窗口中某事件中调用该方法,也可传参数过去
      

  6.   

    有多种方法,如用事件委托、用引用类型....
    下例演示怎样通过引用类型实现你的功能:
    子窗体中定义:
    protected MainForm ParentFrom = null;//主窗体
    新构造函数:
    public ChildForm(MainForm parent)
    {
      InitializeComponent();  this.ParentFrom = parent;//引用
    }主窗体中某Click:
    ChildForm frm = new ChildForm(this);
    frm.ShowDialog(this);子窗体测试:
    void ...Click(....)
    {
     this.Text = "测试引用";
     if (this.ParentFrom != null) this.ParentFrom.Text += "-" + this.Text;//.......
    }
      

  7.   

    子窗体中定义:
    public delegate void sendmessage(string message);
    public event SendTo sendmessage;主窗体:
    ChildForm frm = new ChildForm();
    frm.SendTo += new ChildForm.sendmessage(SendArgs);
    frm.ShowDialog(this);private void SendArgs(string Message)//主窗体接收消息
    {MessageBox.Show("主窗体已收到消息:" + Message);}子窗体测试:
    if (this.SendTo != null) this.SendTo("主窗体收到了吗?");
      

  8.   

    我是通过主窗口的一个函数来打开子窗口的,因为子窗口没有结束(关闭),也就是说主窗口打开子窗口的函数还没结束,怎样会触发主窗口去更新它的控件的属性呢?3tzjq(永不言弃)和 TonyBain() 提到通过子窗口的触发函数来对父窗口控件属性进行更新,想法好像很好,可是在我的程序里面就是不能运行,它说是this.ParentFrom.UpdateStatusBarText(newStr);没有定义,实际上我是在父窗口中定义了这个函数了的。
    不知道什么原因。
      

  9.   

    UpdateStatusBarText 的访问修饰符是否为 public ?
      

  10.   

    谢谢你们了,问题我自己已经搞定,
    我是将父窗口控件在子窗口的构造函数中引用SubForm(ref AxMapObjects2.AxMap baseMap)
    就可以了。谢谢 3tzjq(永不言弃) 和 TonyBain() ,还有 zhangci226(三只熊熊)给我启发。
      

  11.   

    SubForm(ref AxMapObjects2.AxMap baseMap)是什么?好像没见过...