c#.net listview with grouping

时间:2015-07-01 23:39:21

标签: c# .net listview

c#和.net的新手,我试图将列表视图放在一起,列表视图有三列,数量,项目描述和价格。我知道如何用数据填充行,我甚至可以在下面添加子项,但我无法弄清楚我是如何将它们组合在一起作为主要项目与#34; children"与之相关的物品......

很抱歉我最不正确的措辞,但这就是我拍摄的内容:

Qty    Description        Price
1      Widget             2.95
       Widget add on       .25
       Widget insurance   1.25
1      Sprocket           4.95
       Sprocket add on     .50

我正在试图弄清楚如何将主要项目下方的子项目分组,以便在我选择时将其设置为“#34; Widget insurance"”,它突出显示" Widget add on&#34 ;和" Wiget"作为一个实体。例如,如果我需要返回并删除" Widget insurance"从购买" Widget"我可以点击连接到" Widget",ex的任何项目。 " Widget"," Widget添加"或者" Widget保险"它会拉出另一个表格,允许我取消选择" Widget insurance",点击OK,它会相应地更新列表...

我(差劲地)把代码放在一起,在视觉上给了我正在寻找的东西,但我认为我完全混淆了subitem的使用及其目的:

    string[] newItem = new string[3];

    ListViewItem itm;
    newItem[0] = "1";
    newItem[1] = "Widget";
    newItem[2] = "2.95";
    itm = new ListViewItem(newItem);

    listView1.Items.Add(itm);

    string[] newSubItem = new string[3];

    ListViewItem sub;
    newSubItem[0] = "";
    newSubItem[1] = "Widget add on";
    newSubItem[2] = ".25";
    sub = new ListViewItem(newSubItem);

    listView1.Items.Add(sub);

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你在这里。 "数量"将是ListViewItem的文本。 "说明"和"价格"将是ListViewItem的子项目。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        listView1.View = View.Details;
        listView1.Columns.Add("Qty", 100, HorizontalAlignment.Left);
        listView1.Columns.Add("Description", 100, HorizontalAlignment.Left);
        listView1.Columns.Add("Prie", 100, HorizontalAlignment.Left);

        var details = new[] {"Widget", "2.95"};
        var item = new ListViewItem("1");
        item.SubItems.AddRange(details);
        listView1.Items.Add(item);


        details = new[]{ "Widget add on",".25"};
        item = new ListViewItem("");
        item.SubItems.AddRange(details);
        listView1.Items.Add(item);
    }
}

enter image description here

希望得到这个帮助。