1

私の知る限り、Windowsフォームのコンボボックスは1つの値しか保持できません。テキストとインデックスが必要だったので、この小さなクラスを作成しました。

public class ComboboxItem { 
    public string Text { get; set; } 
    public object Value { get; set; } 
    public override string ToString() 
    { 
        return Text; 
    }
}

次のように、コンボボックスにアイテムを追加します。

ComboboxItem item = new ComboboxItem()
{
    Text = select.Item1,
    Value = select.Item2
};

this.comboBoxSelektion.Items.Add(item);

さて、私の質問です。コンボボックスを特定のアイテムに設定するにはどうすればよいですか?私はこれを試しましたが、うまくいきませんでした:

this.comboBoxSelektion.SelectedItem = new ComboboxItem() { Text = "Text", Value = 1};
4

2 に答える 2

2

提供した最後のコードサンプルは機能しません。これは、内ComboBoxのアイテムと作成したアイテムnewが異なるインスタンス(=メモリ参照)であり、同じである(2つの異なるメモリポインタ)が同じである(メンバーが同じ値)。2つのオブジェクトに同じデータが含まれているからといって、それらが同じオブジェクトになるわけではありません。つまり、2つの異なるオブジェクトが同じになります。

そのため、通常、との間には大きな違いがo1 == o2ありo1.Equals(o2);ます。

例:

ComboboxItem item1 = new ComboBoxItem() { Text = "Text", Value = 1 };
ComboboxItem item2 = new ComboBoxItem() { Text = "Text", Value = 1 };
ComboboxItem item3 = item1;

item1 == item2      => false
item1.Equals(item2) => true, if the Equals-method is implemented accordingly
item1 == item3      => true!! item3 "points to the same object" as item1
item2.Equals(item3) => true, as above

あなたがする必要があるのは、あなたがリストに追加したのと同じインスタンスを見つけることです。次のことを試すことができます。

this.comboBoxSelektion.SelectedItem = (from ComboBoxItem i in this.comboBoxSelektion.Items where i.Value == 1 select i).FirstOrDefault();

ComboBoxこれにより、の値に割り当てられたアイテムから最初のアイテムが1選択され、選択されたアイテムとして設定されます。そのような項目がない場合は、nullとして設定されますSelectedItem

于 2012-05-15T08:19:06.547 に答える
0
this.comboBoxSelektion.SelectedValue = 1;
于 2012-05-15T07:59:54.923 に答える