试图将两个组放在同一个列表框中

时间:2011-08-24 08:36:46

标签: c# winforms listbox listboxitem

我有来自数据库的成员名称。现在我需要在列表框中显示这些项目。我有另一个来自数据库的表产品。

根据客户要求,我需要在同一个列表框中显示这些项目。

list box diagram

是否可以将两个项目列表放在由空格分隔的同一个列表框中?点击某个项目是否可以触发某些操作?

有人可以帮忙吗?

如果列表框无法实现,是否可以在列表视图中在一个用白色空格分隔的列中添加两个组,如上图所示?

2 个答案:

答案 0 :(得分:2)

以下是带有组的ListView的一个非常基本的示例:

此MSDN文章有一个更高级的示例:ListViewGroup Class

请注意,只有某些操作系统(我认为是XP及以上版本)才支持群组,因此您需要将此考虑在您的代码中。

listView1.View = View.Details;
listView1.Columns.Add(new ColumnHeader() { Width=-1 });
listView1.HeaderStyle = ColumnHeaderStyle.None;

ListViewGroup membersGroup = new ListViewGroup("Members", HorizontalAlignment.Left);
listView1.Groups.Add(membersGroup);
listView1.Items.Add(new ListViewItem() { Text = "Member 1", Group = membersGroup });
listView1.Items.Add(new ListViewItem() { Text = "Member 2", Group = membersGroup });

ListViewGroup productsGroup = new ListViewGroup("Products", HorizontalAlignment.Left);
listView1.Groups.Add(productsGroup);
listView1.Items.Add(new ListViewItem() { Text = "Product 1", Group = productsGroup });
listView1.Items.Add(new ListViewItem() { Text = "Product 2", Group = productsGroup });

以下是使用TreeView的示例:

var members = new[] 
            {
                new { MemberName = "Member 1", MemberId = 1 },
                new { MemberName = "Member 2", MemberId = 2 }
            };
var products = new[] 
            {
                new { ProductName = "Product 1", ProductId = 1 },
                new { ProductName = "Product 2", ProductId = 2 }
            };

TreeNode membersNode = new TreeNode("Members", members.Select(m => new TreeNode(m.MemberName)).ToArray());
TreeNode productsNode = new TreeNode("Products", products.Select(p => new TreeNode(p.ProductName)).ToArray());

treeView1.Nodes.Add(membersNode);
treeView1.Nodes.Add(productsNode);

希望这些帮助。

答案 1 :(得分:0)

看起来这对TreeView来说真的是一个任务!

编辑: 或者看看这个!

http://www.codeproject.com/KB/list/treelistview.aspx

http://www.codeproject.com/KB/tree/TreeWithColumns.aspx