Ich verwende Windows Forms
. Mit diesem Code füge ich Elemente zu listView
von comboBox
hinzu.Wie verhindere doppelte Einträge listView C#
Ich brauche doppelte Sachen zu verhindern, aber nicht funktionieren, Wie kann ich das lösen?
Ich verwende Windows Forms
. Mit diesem Code füge ich Elemente zu listView
von comboBox
hinzu.Wie verhindere doppelte Einträge listView C#
Ich brauche doppelte Sachen zu verhindern, aber nicht funktionieren, Wie kann ich das lösen?
sollten Sie ContainsKey(string key)
werden anstelle von Contains(ListViewItem item)
var txt = comboBox1.Text;
if (!listView1.Items.ContainsKey(txt))
{
lvi.Text = txt;
// this is the key that ContainsKey uses. you might want to use the value
// of the ComboBox or something else, depending the combobox is freetext
// or regarding your scenario.
lvi.Name = txt;
lvi.SubItems.Add("");
lvi.SubItems.Add("");
lvi.SubItems.Add("");
lvi.SubItems.Add("");
listView1.Items.Add(lvi);
}
Funktioniert wie Charme! Vielen Dank! –
beide funktionieren nicht – CodeOptimizer
Die Listview-Klasse bietet ein paar Möglichkeit zu überprüfen, ob ein Element vorhanden ist:
Contains
Auf Items collection
undFindItemWithText
MethodenEs kann wie verwendet werden:
// assuming you had a pre-existing item
ListViewItem item = ListView1.FindItemWithText("item_key");
if (item == null)
{
// item does not exist
}
// you can also use the overloaded method to match subitems
ListViewItem item = ListView1.FindItemWithText("sub_item_text", true, 0);
if (!listView1.Items.Any(i => i.text == lvi.text))
{
listView1.items.Add(lvi)
}
Ich rate nur auf die Text-Eigenschaft, aber ich bin mir ziemlich sicher, dass das da ist.
Alternativ - haben Sie einfach eine List<string>
und verwenden Sie es als Datenquelle für Ihre Liste.
Dieser Code für mich gearbeitet:
if(DialogResult.OK == fileDialogue.ShowDialog())
{
foreach (var v in fileDialogue.FileNames)
{
if (listView.FindItemWithText(v) == null)
{
listView.Items.Add(v);
}
else
//Throw error message
String csVal = Value;
ListViewItem csItem = new ListViewItem(csVal);
if (!listViewABC.Items.ContainsKey(csVal))
{
csItem.Name = csVal;
listViewABC.Items.Add(csItem);
}
Die 'Contains' prüft, ob die * Referenz * vorhanden ist, kein„ähnlich "Element mit dem gleichen' .Text' und (vielleicht) ähnlichen Unterelementen. –