2

Fooタイプのオブジェクトを含むコンボボックスがあります。Fooクラスは次のとおりです。

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

Foo.nameコンボボックスに表示されるテキストでFoo.path、選択したオプションの値です。

何らかの操作を行った後、コンボボックスからオプションを削除したいと考えています。

私はこれらの方法を試しました:

  • 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); 
    

私には何もうまくいきません。: / これを行う方法?

アップデート

これは、コンボボックスを初期化する方法です:

    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";
4

7 に答える 7

5

omboBox2.Items.Remove(comboBox2.SelectedValue); コンボボックスにバインドされたデータソースからではなく、コンボボックスからのみ削除されます。データソースから削除して、データソースを再バインドできます。

于 2012-07-19T08:07:04.760 に答える
1

プロパティを使用ComboBox.SelectedIndexします。

comboBox1例:フォームに追加してみましょう。削除ボタンで:

if (comboBox1.SelectedIndex >= 0)
    comboBox1.Items.RemoveAt(comboBox1.SelectedIndex);
于 2012-07-19T07:59:15.850 に答える
0

インデックスでアイテムを削除するとします。

    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";  

メンバー値を検索して削除したいとします

    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";  
    }
于 2012-07-19T08:44:35.827 に答える
0

これら 2 つのコマンドは、データ ソースから項目を削除します。

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

また

list.Remove(list.Find(P=>P.name == comboBox1.SelectedText));
于 2012-07-19T09:11:13.843 に答える
0
combox1.Remove(takes an object)
Object selectedItem = comboBox1.SelectedItem;

だから、あなたはこのようにそれを行うことができますcombox1.Remove(selectedItem);

于 2012-07-19T08:03:17.450 に答える