在C#2005中,我新建了一个MDI工程,同时新建了另一个Control Library的工程,生成的UserControl的DLL,插入到MDI子窗体中,现在我通过主窗体访问控件中的公共方法没有问题;
但是在UserControl的DLL中,我想同样去访问MDI主窗体的实例,可惜没有想到一个好的办法!哪位大侠有做过这样的或是有好的主意,不仿提点一二,在此先谢了!

解决方案 »

  1.   

    你可以在MDI主窗体里写个静态方法~,UserControl通过MDI主窗体的静态方法访问MDI主窗体的实例
      

  2.   

    关键是UserControl.dll如何访问主窗体中的静态方法?
      

  3.   

    比较合理的方法,是在usercontrol定义委托,然后提供委托接口。在form中通过自己的函数去初始化这个委托。
      

  4.   

    //in your user control 
    public delegate void Test( string Value );
    publie yourControl
    {
         private Test myTest = null;
         //Init it in constructor or property
         //you can call it as :myTest( "test" );
    }//in your form
    private void myFormTest( string Value )
    {
          Debug.WriteLine( Value );
    }
    //use "myFormTest" to init usercontrol's myTest member as : new Test( myFormTest )
      

  5.   

    在dll中定义一个公共接口,比如你要访问一个Form,定义一个
    public Windows.Form fm;
    在程序启动的时候,对其付值不就行了么