我有一個2列的列表視圖,並且我在用戶輸入和ip:port的表單上有一個按鈕,然後當他點擊按鈕時,它將項目添加到列表視圖中,非常基本。
我想要做的是:
當用戶點擊該按鈕,我要檢查,如果在列表視圖中存在的IP,如果是的話,我再要檢查是否與IP相關的端口存在在子項目中。如果它不是我想要添加項目,那樣我會有例如2個具有相同IP但具有不同端口的項目。C#如果項目存在但子項目不同,如何將項目添加到列表視圖?
任何幫助將不勝感激,在此先感謝!
我有一個2列的列表視圖,並且我在用戶輸入和ip:port的表單上有一個按鈕,然後當他點擊按鈕時,它將項目添加到列表視圖中,非常基本。
我想要做的是:
當用戶點擊該按鈕,我要檢查,如果在列表視圖中存在的IP,如果是的話,我再要檢查是否與IP相關的端口存在在子項目中。如果它不是我想要添加項目,那樣我會有例如2個具有相同IP但具有不同端口的項目。C#如果項目存在但子項目不同,如何將項目添加到列表視圖?
任何幫助將不勝感激,在此先感謝!
試試這個:
void Main()
{
Form form = new Form();
ListView lv = new ListView();
lv.View = View.Details;
lv.Columns.Add(new ColumnHeader() { Name = "ip", Text = "IP Address" });
lv.Columns.Add(new ColumnHeader() { Name = "port", Text = "Port" });
lv.Dock = DockStyle.Fill;
// Tests.
AddItem(lv, "10.0.0.1", String.Empty);
AddItem(lv, "10.0.0.2", String.Empty);
AddItem(lv, "10.0.0.1", "8080");
AddItem(lv, "10.0.0.1", String.Empty);
AddItem(lv, "10.0.0.1", "8080");
form.Controls.Add(lv);
form.ShowDialog();
}
private void AddItem(ListView listView, string ip, string port)
{
var items = listView.Items.Cast<ListViewItem>();
// First subitem starts at index 1.
bool exists = items.Where(item =>
(item.Text == ip && item.SubItems[1].Text == port)).Any();
if (!exists)
{
var item = new ListViewItem(ip);
item.SubItems.Add(new ListViewItem.ListViewSubItem(item, port));
listView.Items.Add(item);
}
else
{
Console.WriteLine("Duplicate: {0}:{1}", ip, port);
}
}
的檢查是在AddItem()
方法。根據您的要求進行修改。
工程就像一個魅力!謝謝! – user2732954
不客氣! –
我將通過使用模型Dictionary<string, List<string>>
來分隔控件和數據來填充listview。更容易驗證和修改。
我只想在端口不同的情況下重複IP。如果IP和端口已經存在於列表視圖中,我不想添加它們。 – user2732954