2 Stimmen

Wie kann man ein Objekt aus einer Combobox löschen?

Ich habe eine Combobox mit Objekten von Foo Typ, hier ist die Foo Klasse:

public class Foo
{
    public string name { get; set; }
    public string path { get; set; }
}

Les Foo.name ist der angezeigte Text in der Combobox und Foo.path ist der Wert der ausgewählten Option.

Ich möchte eine Option aus der Combobox löschen, nachdem ich eine Operation durchgeführt habe.

Ich habe es auf diese Weise versucht:

  • 1

    comboBox2.Items.Remove(@comboBox2.Text);  
  • 2

    comboBox2.Items.Remove(@comboBox2.SelectedValue.ToString());  
  • 3

    Foo ToDelete = new Foo();
    ToDelete.name = @comboBox2.Text;
    ToDelete.path = @comboBox2.SelectedValue.ToString();
    comboBox2.Items.Remove(ToDelete); 

Bei mir funktioniert nichts : / Wie geht das?

UPDATE

So initialisiere ich meine Combobox:

    string[] filePaths = Directory.GetFiles(sites.paths[comboBox1.SelectedIndex]);

        List<Foo> combo2data = new List<Foo>();

        foreach (string s in filePaths)
        {
            Foo fileInsert = new Foo();
            fileInsert.path = s;
            fileInsert.name = Path.GetFileName(s);
            combo2data.Add(fileInsert);
        }

        comboBox2.DataSource = combo2data;
        comboBox2.ValueMember = "path";
        comboBox2.DisplayMember = "name";

5voto

Ebad Masood Punkte 2389

ComboBox2.Items.Remove(comboBox2.SelectedValue); wird nur aus der Combobox entfernt, nicht aus der Datenquelle, die an die Combobox gebunden ist. Sie können sie aus der Datenquelle entfernen und die Datenquelle neu binden.

1voto

Verwenden Sie ComboBox.SelectedIndex Eigentum.

Zum Beispiel: Ich möchte comboBox1 zum Formular hinzugefügt. In der Schaltfläche Löschen:

if (comboBox1.SelectedIndex >= 0)
    comboBox1.Items.RemoveAt(comboBox1.SelectedIndex);

0voto

HatSoft Punkte 10889
combox1.Remove(takes an object)
Object selectedItem = comboBox1.SelectedItem;

So kann man es machen combox1.Remove(selectedItem);

0voto

Arif Eqbal Punkte 2978

Angenommen, Sie möchten Elemente nach Index entfernen:

    combo2data.RemoveAt(0); //Removing by Index from the dataSource which is a List

    //Rebind
    comboBox2.DataSource = null;
    comboBox2.DataSource = combo2data;  
    comboBox2.ValueMember = "path";  
    comboBox2.DisplayMember = "name";  

Angenommen, Sie möchten durch Suchen nach einem Mitgliedswert entfernen

    Foo item = combo2data.Where(f => f.name.Equals("Tom")).FirstOrDefault();
    if (item != null)
    {
        combo2data.Remove(item);
        comboBox2.DataSource = null;
        comboBox2.DataSource = combo2data;  
        comboBox2.ValueMember = "path";  
        comboBox2.DisplayMember = "name";  
    }

0voto

Stig Punkte 1293

Mit diesen 2 Befehlen wird ein Element aus Ihrer Datenquelle entfernt.

list.Remove((Foo)comboBox1.SelectedItem);

または

list.Remove(list.Find(P=>P.name == comboBox1.SelectedText));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X