winform有兩個project
mdiform所在project引用了另一個dll project
那麼在dll project中要如何設置mdiform實例中一些控件的狀態

解决方案 »

  1.   

    方法一:把那些控件设置成Public
    方法二:在mdiform添加一些可以设置它上面的控件的状态的public方法
      

  2.   

    这个问题所有windows 程序好像处理起来都是一样的mdiform 引用 dll 
    dll 还要用 mdiform 就是说也需要引用 mdiform 所在的 project
    不过这样就循环引用了,解决办法
    A)面向对象的方式,就是在建立一个 project 方一些接口或虚基类什么的,比如3个 project 
    1、mdiform project 引用 interface 和  dll 
    2、dll project 引用 interface 
    3、interface project 什么也不引用然后 mdiform 实现 interface 中自己定义好的修改某些东西的 函数 或属性
    调用dll是把自己以接口的方式传递给 dll dll 类的函数类型写 interface 不要写 mdiform
    B)就是面向单个控件的
    就需要 mdiform ,dll 两个
    midform 调用 dll 中的某个类的时候不可以把自己传进去
    dll 需要那个控件就传递那个就可以了C)利用反射
    midform 把自己作为一个 Form 类传递给 dll 中的某个类
    dll 利用反射调用 任何midform 中的函数属性,控件都可以
    不过要预先知道控件名称什么的如果dll需要处理的东西多 建议使用A
    如果比较少使用 B
    C 不推荐,性能不好、而且反射用的多导致代码不好维护
      

  3.   

    首先謝謝兩位大哥
     FlashElf(銘龘鶽) 您的A方法沒有看懂,
    调用dll是把自己以接口的方式传递给 dll 
    dll 类的函数类型写 interface 不要写 mdiform
    能否給點具體代碼,謝了