可选列表中的用户控件 - 最好的方法吗?

时间:2008-12-07 23:18:05

标签: c# winforms listview user-controls

使用C#win表单,我正在尝试创建一个项目列表,其中每个项目都被图标和特定布局中的3个标签所破坏。

以下是它的例子

http://hosting04.imagecross.com/image-hosting-13/3535help.jpg

用户应该能够选择单行,就像在正常的Listview中一样。

我的第一次尝试是在用户控件中创建图标和标签,然后将用户控件放在FlowLayoutPanel的垂直布局中(这将创建一个列表)。 问题是选择。由于点击事件是由用户控件捕获的,因此没有简单的方法让列表中的其他用户控件知道控件已被选中,如果它们当前被选中,则现在应该取消选择它们。 (我希望这是有道理的......)

我还尝试使用我在此处找到的一些开源自定义Listview:http://www.codeproject.com/KB/list/aa_listview.aspx 但它太多了。

我还想过创建一个自定义控件,它将从Listview继承并在列表中呈现我的用户控件,但我也读过有关试图这样做并遇到很多困难的人。

我很高兴听到你的任何建议。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可能想要尝试的是有两个用户控件。您似乎已经拥有的一个控件,即图标和标签。这将是一个内部控件,您无法在程序集外实例化。第二个用户控件只是一个容器(你可以通过实际使用用户控件,或从面板或其他任何东西继承,无关紧要)。这将仅作为单个项目的集合,并且将管理项目的选择和取消选择。

基本上,每个用户控件都会引发click事件,容器用户控件将连接到该事件。然后它将知道选择哪个以及取消选择哪个。

希望有意义!