2014-02-26 121 views
0

我有一个2列的列表视图,并且我在用户输入和ip:port的表单上有一个按钮,然后当他点击按钮时,它将项目添加到列表视图中,非常基本。

我想要做的是:
当用户点击该按钮,我要检查,如果在列表视图中存在的IP,如果是的话,我再要检查是否与IP相关的端口存在在子项目中。如果它不是我想要添加项目,那样我会有例如2个具有相同IP但具有不同端口的项目。C#如果项目存在但子项目不同,如何将项目添加到列表视图?

任何帮助将不胜感激,在此先感谢!

+0

我只想在端口不同的情况下重复IP。如果IP和端口已经存在于列表视图中,我不想添加它们。 – user2732954

回答

1

试试这个:

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

+0

工程就像一个魅力!谢谢! – user2732954

+0

不客气! –

0

我将通过使用模型Dictionary<string, List<string>>来分隔控件和数据来填充listview。更容易验证和修改。

相关问题