有两个窗体FormA,FormB,在FormB需要更新FormA的listview,我的做法是在FormA写个公有函数,然后在FormB的构造函数传个forma引用进去。
我觉得这种做法有种欠妥~
大家觉得呢?还有有什么想法呢

解决方案 »

  1.   

    方案一、楼主的
    方案二、在FormB添加自定义事件,FormA订购该事件并在事件处理中更新ListView
    两种方法都有可取之处。具体看应用场景。
      

  2.   

    在FormB里面使用:(记得把ListView设为Public之类的)
    (Application.OpenForms["FormA"] as FormA).ListView
      

  3.   

    其实想要清静的架构很容易,只要坚持“客户-服务”关系模式,避免相互纠结相互依赖的关系。比如说A依赖于B,那么A就可以直接操作B,但是此时B一定要使用依赖倒置的原则与A(以及一切对此服务感兴趣的宿主客户端)通讯。依赖倒置是很重要的。如果你总是相互依赖,那么关键时候你也不知道该如何清爽地交互了,而且也不知道如何扩展这种关系了。
      

  4.   

    常用的设计方案是:form之间不直接通信,
    1.编写通信契约,更多的是采用现成的,比如:json,xml等,
    2.通过一个服务来实现信息交互
    这样的话,所有form也好,客户端也好,他们不会相互依赖,
    他们都只依赖于一个对通信的统一描述,
    删除任何一个form,甚至不需要做其他任何修改