c# - 可选列表中的用户控件 - 最好的方法是什么?

标签 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 并在列表中呈现我的用户控件,但我也读到有人试图这样做并遇到了很多困难。

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

谢谢!

最佳答案

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

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

希望这是有道理的!

关于c# - 可选列表中的用户控件 - 最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/348291/

相关文章:

android - 使用游标填充后将项目添加到 ListView

c# - 将 T01D163DE49AED860 转换为日期时间?

c# - 如何捕获子控件下的 mousemove 事件

c# - 我如何过滤掉 NaN 值并将其替换为另一个值

vb.net - WinForms 应用程序之间的 SendMessage - 表单需要焦点

c# - DataGridView 将列中的所有值写入列表

macos - 为什么 SwiftUI 列表行被选中但未突出显示 (MacOS)

c# - 如何在泛型方法中比较两个值?

C#:编译表达式时,已经添加了具有相同键的项

c# - 在 Win10 UWP App 中获取屏幕分辨率