如何让用户将两个列表中的项目匹配在一起?

时间:2011-12-13 15:21:28

标签: c# .net winforms

我有两个清单。第一个包含名称(字符串),第二个包含过滤器(对象)。

我想要的是为用户提供UI,以便让他们将名称与过滤器匹配。

过滤器可以与许多名称匹配,名称必须与一个过滤器匹配。

我该怎么做?我相信这项工作没有现成的控制措施。

示例:

用户应该可以这样做:

  • name1 - > filterA
  • name2 - > filterA
  • name3 - > filterB

2 个答案:

答案 0 :(得分:1)

如果您使用的是ListView,则可以使用Tag& Name ListViewItem提供隐藏数据(至少来自用户)并比较每个列表视图项的属性。{/ p>

你可以尝试这样的东西(它没有经过测试和动态写入:P)我仍然不确定我是否有你的问题。原谅我!!

public Form1()
{
    InitializeComponent();

    ListViewItem item1;

    int i = 1;
    while (i < 6)
    {
        item1 = new ListViewItem();
        item1.Text = "Item" + i.ToString();
        item1.Tag = new List<string>();
        listView1.Items.Add(item1);

        i++;
    }

    i = 1;
    while (i < 6)
    {
        item1 = new ListViewItem();
        item1.Text = "Filter" + i.ToString();
        listView2.Items.Add(item1);

        i++;
    }
}

private void button1_Click(object sender, EventArgs e)
{
    List<string> temp = (List<string>)listView1.SelectedItems[0].Tag;

    temp.Add(listView2.SelectedItems[0].Text);

    listView1.SelectedItems[0].Tag = temp;
 }

答案 1 :(得分:1)

我能想到的最自然的方式是提供一个ListView,左边是所有名字,右边是一个包含过滤器的ComboBox。

这也可以确保用户只能选择一个过滤器。