[英]C# How to get the subitem on a listview to stay on the same line as the item?
[英]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.