【问题标题】:How do you create Winform user control that supports multiple items like a listbox如何创建支持多个项目(如列表框)的 Winform 用户控件
【发布时间】:2011-06-16 18:29:43
【问题描述】:

我想我了解创建 winforms 用户控件的基础知识。我可以添加新并选择用户控件,这将为我提供设计界面和设计器文件以及代码隐藏文件等。然后我可以将其更改为继承自 UserControl 以外的其他内容(如列表框或文本框)。

这次对我来说不同的是,用户控件需要是一个列表控件(如列表框),可以进行数据绑定,并且其中包含两个可绑定数据的控件(两个组合框)。

我不知道从哪里开始?任何人都可以参考我缺少的工具中的文档或一些明显的部分,以使其快速简单吗?我可以采取的任何方法,例如扩展现有控件。我需要注意什么问题?

谢谢。

赛斯

编辑
我决定采取不同的方法。不过,我把这个问题留了下来。这显然比我想象的困难。不幸的是,WPF 不是我的选择。只是要使用数据网格。

【问题讨论】:

  • 也许是时候让你接受答案了……

标签: .net visual-studio winforms visual-studio-2010 user-controls


【解决方案1】:

然后我可以将其更改为继承自 UserControl 以外的其他内容(如列表框或文本框)。

这是您犯错的地方...当您从 UserControl 派生时,您不应该更改继承。从 UserControl 继承使您可以在设计图面上放置多个不同的控件(如列表框和两个组合框)。这些组合控件使您成为唯一的(用户)控件,您应该给它一个不言自明的名称。明白它? 它非常简单、非常强大、非常可重用、有趣,我们经常使用它。

一个很好的参考可能是这样的:Microsoft walkthrough, MonthPicker (simple)

【讨论】:

    【解决方案2】:

    您将无法覆盖列表控件来满足您的要求。反正不容易。但是还有其他选择:

    由于控件有自己的事件,您可以覆盖渲染,并绘制看起来像列表控件的视觉特征。接下来,您必须创建委托和事件处理程序,以便您的控件可以向表单的其余部分发出信号,告知其内部发生了某些事情。

    下一个替代方法是执行与我上面描述的相同的操作,但是使用 WPF。 WPF 在自定义 UI 方面具有更大的灵活性。

    【讨论】:

      【解决方案3】:

      创建一个用户控件,添加一个列表框并将其设置为 dock = full(或任何适合您的设计需要)。

      覆盖 DataSource 属性并让它调用一个方法,将源组合成一个源,然后将该单个源绑定/重新绑定到您的列表。

      这有缺点,但这是一种方式。

      另一种方法是不创建用户控件,而是将所有源合并到一个源中,然后将其绑定到列表框控件。

      WPF 在这种情况下无济于事。

      【讨论】:

        猜你喜欢
        • 2012-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-30
        • 2014-04-28
        • 1970-01-01
        相关资源
        最近更新 更多