需要两个用户控件(winforms)进行通信时的最佳实践

l3d*_*3dx 5 c# user-controls design-patterns winforms

扩展问题

除了下面指定的原始问题之外,我还要添加一个新问题。应用程序中的一个用户控件包含我需要从另一个用户控件访问的对象列表。如何才能做到这一点?(我不认为将控件划分得很好,但是我不希望更改它。)

我应该像原始问题一样通过事件进行操作,还是应该掌握父窗体,并使用它来查找控件的实例,并将其公开为属性?


原始问题

我有两个用户控件,它们的形式希望彼此通信。用户控件A应该能够在B上启动操作。

解决此问题的首选方法是什么?表单是否应该等待A的事件,然后在B上开始操作?有任何设计模式吗?还是更简单的解决方案?

提前致谢!:)

Jam*_*Ide 3

两个用户控件不应相互了解。如果您希望始终将它们作为一对处理,请考虑创建第三个用户控件来容纳它们。

表单是否应该等待来自 A 的事件,然后开始对 B 进行操作?

是的,这是处理这个问题的唯一好方法。

扩展(奖励?)问题有点棘手。我将通过让表单将用户控件的委托传递给另一个用户控件上的方法来检索数据来处理此问题。然后,用户控件可以调用委托方法来调用另一个控件上的方法,而无需了解其实现。