簡體   English   中英

C#如果項目存在但子項目不同,如何將其添加到列表視圖中?

[英]C# How to add an item to a listview if the item exists but the subitem is different?

我有一個包含2列的列表視圖,並且在用戶輸入ip:port的表單上有一個按鈕,然后當他單擊按鈕時,它將項目添加到列表視圖中,這非常簡單。

我想做的是:
當用戶單擊按鈕時,我要檢查列表視圖中是否存在該ip,如果存在,則要檢查子項中是否存在與該ip相關聯的端口。 如果不是,我想添加該項目,例如,我將擁有2個具有相同IP但端口不同的項目。

任何幫助將不勝感激,在此先感謝!

嘗試這個:

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()方法中。 根據您的要求進行修改。

我將使用Dictionary<string, List<string>>來填充列表視圖,從而將控件和數據分開。 易於驗證和修改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM