我有兩個列表。第一個包含名稱(字符串),第二個包含過濾器(對象)。如何讓用戶將兩個列表中的項目一起匹配?
我想要的是向用戶提供一個用戶界面,以便讓他們用過濾器匹配一個名稱。
過濾器可以與許多名稱匹配,名稱必須與恰好一個過濾器匹配。
我該怎麼做?我相信這個工作沒有現成的控制。
實施例:
用戶應該能夠做到這一點:
- NAME1 - > filterA
- NAME2 - > filterA
- NAME3 - > filterB
我有兩個列表。第一個包含名稱(字符串),第二個包含過濾器(對象)。如何讓用戶將兩個列表中的項目一起匹配?
我想要的是向用戶提供一個用戶界面,以便讓他們用過濾器匹配一個名稱。
過濾器可以與許多名稱匹配,名稱必須與恰好一個過濾器匹配。
我該怎麼做?我相信這個工作沒有現成的控制。
實施例:
用戶應該能夠做到這一點:
我能想到的最自然的方式是提供一個ListView,左邊是所有名稱,右邊是ComboBox,它包含過濾器。
這也將確保用戶只能選擇一個過濾器。
這也是我的第一個想法。你有沒有找到關於如何使用數據源來做到這一點的例子?我真的不想映射所有東西,並從UI中獲取值並將它們添加到類中,等等。 – Odys
自從我做了任何winform開發之後,這已經有一段時間了......但是這裏有很多關於這個主題的問題在SO上。示例:http://stackoverflow.com/questions/600869/how-to-bind-a-list-to-a-combobox-winforms –
如果您使用的是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;
}
到目前爲止做了什麼? –
你使用的是ListBox還是ListView? –
我不介意使用它們中的任何一個!你有什麼建議嗎? – Odys