2011-12-13 47 views
0

我有兩個列表。第一個包含名稱(字符串),第二個包含過濾器(對象)。如何讓用戶將兩個列表中的項目一起匹配?

我想要的是向用戶提供一個用戶界面,以便讓他們用過濾器匹配一個名稱。

過濾器可以與許多名稱匹配,名稱必須與恰好一個過濾器匹配。

我該怎麼做?我相信這個工作沒有現成的控制。

實施例:

用戶應該能夠做到這一點:

  • NAME1 - > filterA
  • NAME2 - > filterA
  • NAME3 - > filterB
+0

到目前爲止做了什麼? –

+0

你使用的是ListBox還是ListView? –

+0

我不介意使用它們中的任何一個!你有什麼建議嗎? – Odys

回答

1

我能想到的最自然的方式是提供一個ListView,左邊是所有名稱,右邊是ComboBox,它包含過濾器。

這也將確保用戶只能選擇一個過濾器。

+0

這也是我的第一個想法。你有沒有找到關於如何使用數據源來做到這一點的例子?我真的不想映射所有東西,並從UI中獲取值並將它們添加到類中,等等。 – Odys

+0

自從我做了任何winform開發之後,這已經有一段時間了......但是這裏有很多關於這個主題的問題在SO上。示例:http://stackoverflow.com/questions/600869/how-to-bind-a-list-to-a-combobox-winforms –

1

如果您使用的是ListView,則可以使用Tag & Name推測ListViewItem提供一些隱藏數據(至少來自用戶)並比較每個列表視圖項目的那些屬性。你可以嘗試這樣的事情(它沒有經過測試和寫在飛行中: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; 
} 
+0

用戶如何進行匹配? – Odys

+0

你可以用一些樣本數據更新你的問題,這樣人們可以更好地瞭解你在找什麼?顯然,匹配應該用你的代碼完成:P用戶只是看到屏幕上的字符串! –

+0

在我的問題中增加了一個例子 – Odys

相關問題