C#应用程序中几个窗口之间交互的最佳/正确方式是什么? 最近,我遇到了一个问题,其中一个程序窗口必须调用方法修改主窗口。我的解决方案是创建类工厂类,它将安排所有基础模型数据并组织各个窗口之间的通信(通过代表)。但是,由于传递一个或两个代表不是问题,我开始考虑如果其他窗口需要10位代表与主窗口进行正确的交互,该怎么办?代表是否有很好的解决方案如何以良好的方式传递它们 - 通过构造函数,属性?或者,使用那么多代表的需要是一些严重的设计缺陷本身?窗口之间的相互作用
2
A
回答
3
需要由控制器来分割从视图中的模型。放置一个能够同时具有形式参照并且能够管理共享信息的对象。
另一种解决方案是将formX的引用发送到formY,这样它们可以进行通信。
0
如果只需要与主窗口进行交互,为什么不在其他人的构造函数中引用主窗口?
public class MainForm : Form
{
}
public class OtherForm : Form
{
protected MainForm MainForm { get; set; }
public OtherForm(MainForm mainForm) : base()
{
this.MainForm = mainForm;
}
}
编辑:
简单有效。
如果您的表单需要与应用程序的所有其他形式进行交互,那么service locator类型模式可能更适合。
0
以前用MFC,有东西通知所有窗口。您将传递带参数的事件ID。
你可以做一些类似的事情,一个委托会公开一个事件ID和一个参数集合。
这样做的最大优点是窗口只需要实现一个网关。
0
可以使用一个单一的代表,使用自定义的EventArgs通过几个信息,如:类型notificaton的,附加的参数等
1
我们使用使用主题/观察者模式的自定义表单管理器。
每个被打开的窗体都被报告给FormsManager,FromsManager自己使窗体成为观察者。
它也使窗体观察者的FormsManager。
所以,你最终会看到每一个形式观察FormsManager和FormsManager观察每一个表单。然后每个表单可以通过FormsManager与任何其他表单进行通信,而不需要每个表单都知道所有其他表单。
相关问题
- 1. XUL窗口之间的相互作用
- 2. wpf中两个独立窗口之间的相互作用
- 3. JavaScript - 可以做2窗口之间的相互作用的东西吗?
- 4. 表单之间的相互作用
- 5. 类之间的相互作用
- 6. seque和pmap之间的相互作用
- 7. httpmodules和httphandlers之间的相互作用
- 8. 指令之间的相互作用
- 9. UserControl和Windows之间的相互作用
- 10. C和R之间的相互作用
- 11. WinForms应用程序中的窗体之间的相互作用,c#
- 12. Angular 4 - 非相关组件之间的相互作用
- 13. 弹出窗口和浏览器动作窗口之间的chrome.storage
- 14. 在IntelliJ中相同窗格的窗口之间切换
- 15. 用户控件之间的相互作用
- 16. 应用程序之间的相互作用
- 17. 如何处理窗口间的相互通信
- 18. 扫描仪方法之间的相互作用/ main()的
- 19. 跨窗口js弹出窗口和同一域的另一个窗口之间的交互
- 20. Crypt :: RSA(Perl)和java.security.Signature(Java)之间的相互作用
- 21. JavaFX - 圆形与矩形之间的相互作用
- 22. 类型类和自动策略之间的相互作用
- 23. jdom与ssis之间的奇怪相互作用
- 24. 阵列之间的相互作用(Java新手)
- 25. CellTree和面板GWT之间的相互作用
- 26. JTextField和JSlider之间的相互作用 - DocumentListener会混淆
- 27. 变换反馈和glMultiDrawArrays之间的相互作用?
- 28. Caliburn中View和ViewModel之间的相互作用
- 29. 软件设计 - 两个类之间的相互作用
- 30. 2种形式之间的相互作用(隐藏/显示)
完全不是,这是关于在单个应用程序的窗口之间发送消息,我认为,不是进程间通信。 – Sekhat 2008-11-12 13:38:34
啊,我的歉意。我会重新打开它。 – 2008-11-12 13:39:15
@TalhaIrfan按要求删除。 – 2016-05-26 01:36:55