我们如何访问添加到ListView的商品?
我要做的是:在列表视图中添加一个项目。我想检查要添加到列表视图的项目是否已存在于ListView中。
我正在使用C#和Visual Studio 2005。
答案 0 :(得分:17)
ListView
类提供了一些不同的方法来确定项是否存在:
Contains
Items
collection
FindItemWithText
方法之一它们可以按以下方式使用:
// assuming you had a pre-existing item
ListViewItem item = ListView1.FindItemWithText("test");
if (!ListView1.Items.Contains(item))
{
// doesn't exist, add it
}
// or you could find it by the item's text value
ListViewItem item = ListView1.FindItemWithText("test");
if (item != null)
{
// it exists
}
else
{
// doesn't exist
}
// you can also use the overloaded method to match sub items
ListViewItem item = ListView1.FindItemWithText("world", true, 0);
答案 1 :(得分:3)
只需添加您的商品,并确保指定名称。然后
只需使用ContainsKey
集合的Items
方法即可
确定它是否存在,就像这样。
for (int i = 0; i < 20; i++)
{
ListViewItem item = new ListViewItem("Item" + i.ToString("00"));
item.Name = "Item"+ i.ToString("00");
listView1.Items.Add(item);
}
MessageBox.Show(listView1.Items.ContainsKey("Item00").ToString()); // True
MessageBox.Show(listView1.Items.ContainsKey("Item20").ToString()); // False
答案 2 :(得分:1)
你可以这样做:
ListViewItem itemToAdd;
bool exists = false;
foreach (ListViewItem item in yourListView.Items)
{
if(item == itemToAdd)
exists=true;
}
if(!exists)
yourListView.Items.Add(itemToAdd);
答案 3 :(得分:0)
Robban回答中的一个小修正
ListViewItem itemToAdd;
bool exists = false;
foreach (ListViewItem item in yourListView.Items)
{
if(item == itemToAdd)
{
exists=true;
break; // Break the loop if the item found.
}
}
if(!exists)
{
yourListView.Items.Add(itemToAdd);
}
else
{
MessageBox.Show("This item already exists");
}
答案 4 :(得分:0)
以下内容有助于在您添加ListViewItem
控件后在ListView
控件中找到string key = <some generated value that defines the key per item>;
if (!theListViewControl.Items.ContainsKey(key))
{
item = theListViewControl.Items.Add(key, "initial text", -1);
}
// now we get the list item based on the key, since we already
// added it if it does not exist
item = theListViewControl.Items[key];
...
:
key
注意强>
用于将项添加到ListView
项集合的ListViewItem
可以是任何唯一值,可以标识项集合中的ListViewItem
。例如,它可能是哈希码值或附加到{{1}}的对象上的某个属性。
答案 5 :(得分:0)
如果是多列ListView,您可以使用以下代码来防止根据任何列重复输入:
让我们假设有一个像这样的法官
public class Judge
{
public string judgename;
public bool judgement;
public string sequence;
public bool author;
public int id;
}
我想在ListView中添加此类的唯一对象。在这个类中,id是唯一字段,因此我可以在此字段的帮助下检查ListView中的唯一记录。
Judge judge = new Judge
{
judgename = comboName.Text,
judgement = checkjudgement.Checked,
sequence = txtsequence.Text,
author = checkauthor.Checked,
id = Convert.ToInt32(comboName.SelectedValue)
};
ListViewItem lvi = new ListViewItem(judge.judgename);
lvi.SubItems.Add(judge.judgement ? "Yes" : "No");
lvi.SubItems.Add(string.IsNullOrEmpty(judge.sequence) ? "" : txtsequence.Text);
lvi.SubItems.Add(judge.author ? "Yes" : "No");
lvi.SubItems.Add((judge.id).ToString());
if (listView1.Items.Count != 0)
{
ListViewItem item = listView1.FindItemWithText(comboName.SelectedValue.ToString(), true, 0);
if (item != null)
{
// it exists
}
else
{
// doesn't exist
}
}