【问题标题】:Windows Forms : Custom Events vs. Exposed Properties for composite controlsWindows 窗体:自定义事件与复合控件的公开属性
【发布时间】:2012-08-03 14:06:05
【问题描述】:

假设我有一个复合控件,其中有一个 ListBox 控件,其中列出了员工,例如,另一个控件包含多个 TextBox 控件,其中包含员工的详细信息。

当从 ListBox 控件中选择一个员工时,我需要将一个 Employee 对象传递给“详细”控件,然后将每个 TextBox 控件的 Text 属性分配给它们与 Employee 对象的相关属性。

我有两种解决方案可以将 Employee 对象传递给“详细信息”控件,但我不确定哪个是最好的。

解决方案1 ​​在“详细信息”控制中公开员工属性 em>,因此选择员工时,我可以执行decondontrol.employee = selectedEmployee。

解决方案 2在主控件中公开一个事件,并在选择员工时触发它。 “详细信息”控件将订阅该事件并通过事件的 eventargs 接收 Employee 对象。

我知道这两种方法都可以正常工作。我只是不确定什么是最好用的。

有人说您应该使用自定义事件在控件之间传递数据,这是一种最好的松散耦合方法。

有人说实现自定义事件需要更多时间,因为您必须创建它们、向其中添加属性等,因此使用公开的属性更快更简单。

你有什么建议?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    嗯,在我的理想世界中,你应该有某种控制器。

    主控件会引发一个控制器会监听的事件。然后控制器将解码应该通知谁,即细节控制。

    这完全解耦了 UI 组件,提供了通常的好处,包括促进单元测试。

    【讨论】:

    • 在 WPF 中我会使用 Model-View-ViewModel 模式,但我不知道如何在 Windows 窗体中实现 MVC 模式。你能推荐相关的文档吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多