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

扩展问题

除了下面指出的原始问题之外,我还想添加一个新问题.应用程序中的一个用户控件包含我需要从另一个用户控件访问的对象列表.如何才能做到这一点? (我不相信对控件的划分非常好,但我宁愿不改变它……)

我应该通过事件和原始问题一起进行,还是应该获取父表单,并使用它来查找控件的实例,并将其作为属性公开?

原来的问题

我有一个表单中的两个用户控件,我希望能够相互通信. Usercontrol A应该能够在B上启动操作.

解决这个问题的首选方法是什么?如果表单等待来自A的事件,然后在B上开始操作?这有什么设计模式吗?或者它是一个更简单的解决方案?

提前致谢! 🙂

最佳答案 两个用户控件不应该彼此了解.如果您希望始终将它们作为一对处理,请考虑创建第三个用户控件来容纳它们.

Should the form wait for an Event from A, and then start the operation on B?

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

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

点赞