MDIContainer Pass变量和一个窗口

时间:2011-08-11 17:18:54

标签: c# winforms variables containers mdi

我是你好,使用MDIContainer  1.我怎样才能将从父母到儿童的可变通过?  2.如何禁止打开多个具有相同名称的窗口(这意味着在我的MenuStrip中有Ordre,Tarif,Config ...当用户已经打开Ordre时,当他再次单击menustrip ordre时,它不会打开一个新窗口/创建了一个新孩子,但指向已经打开的ordre窗口??

之前的Thanx。

1 个答案:

答案 0 :(得分:2)

在mdicontainer窗口中创建一个私有,受保护或公共成员:

class MyMdiContainer : Form
{
    private object m_var;

    // Property approach
    public object MyVar
    {
        get { return m_var; }
        set { m_var = value; }
    }
}

这是mdi孩子:

class MyMdiChild : Form
{
    private object m_childVar;

    void Communicate()
    {
        // Read variable
        this.m_childVar = ((MyMdiContainer) this.MDIParent).MyVar;

        ((MyMdiContainer) this.MDIParent).MyVar = "Child Foo";
    }
}

在上面的示例中,我们使用两个字段,每个字段用于两个类,用于将var存储在MDI父级中的属性,以及用于在变量上进行通信并在子级内部存储副本的子方法。

这对于父母对孩子很有用,但是对于有同步的多个孩子,它应该以不同的方式实现。