ComboBox ItemsコレクションはObjectCollectionですので、必要なものを格納することはできますが、ListViewItemと同じようにTextプロパティを取得しないことを意味します。 ComboBoxは、各アイテムのToString()を呼び出すか、DisplayMemberプロパティが設定されている場合はリフレクションを使用してアイテムを表示します。コンボボックスアイテムをインプレイスでどのように更新しますか?
My ComboBoxはDropDownListモードです。私は、ユーザーが選択したときに、リスト内の単一項目の項目テキストを更新したいという状況があります。問題は、ComboBoxが読み込まれたときだけでなく、いつでもテキストを再クエリしないということです。選択したアイテムを削除して再追加する以外に、他にどのようにするかわかりません。
PlantComboBoxItem selectedItem = cboPlants.SelectedItem as PlantComboBoxItem;
// ...
cboPlants.BeginUpdate();
int selectedIndex = cboPlants.SelectedIndex;
cboPlants.Items.RemoveAt(selectedIndex);
cboPlants.Items.Insert(selectedIndex, selectedItem);
cboPlants.SelectedIndex = selectedIndex;
cboPlants.EndUpdate();
このコードは、私のSelectedIndexをイベントが(その後、再び、私はこのコードでプロパティを再設定する場合、一度元のユーザーイベントに、と)二回解雇終わるという事実を除いて、正常に動作します。この場合、イベントは2回発射されることは大したことではありませんが、非効率的で、私はそれが嫌いです。 2回目にイベントを終了するようにフラグを設定できますが、それはハッキングです。
これを機能させるには良い方法がありますか?
は、私は疑問に思います。 –
Noooooo ... ResetItem()はSelectedIndexChangedメソッドを起動します:( ああ、これは私の元々の解決策であることがまだまだ清潔です。 –
'ResetItem()'を呼び出す必要がありますか? 'cboPlants'の項目は、ちょうどそれを直接更新する(私は思う?)。'_plantList [selectedIndex]'で 'SelectedIndexChanged'イベントにアクセスできます。 – Donut