web-dev-qa-db-ja.com

古いインデックスと新しいインデックスが同じ場合でも、ComboBox SelectedIndex Changedイベントを発生させることはできますか?

古いインデックスと新しいインデックスが同じ場合でも、winformのcomboxのSelectedIndexChangedイベントを発生させる必要があるシナリオがあります。値がプログラムで設定されているため、SelectionChangeCommitedを使用できません。 ..そしてそれは解雇されません。古いものと同じインデックスが同じ場合でも、「SelectedIndexChanged」を強制的に起動するのは偶然ですか?

8
SamuraiJack

イベントハンドラーを直接呼び出すことを妨げるものは何もありません。

comboBox1_SelectedIndexChanged(comboBox1, new EventArgs()); // or (null, null)

しかし、atomarasの解決策は、それを行うためのより良い(より良い)方法です。

私自身、それほど深刻ではないソフトウェアで標準コンポーネントを使用するのは嫌いです。代わりに、すべての標準コンポーネントを最初からサブクラス化し、既存のフォームで何も変更することなく、必要に応じてすぐに機能を追加します。

この場合、イベントを実行するためにパブリックイベントライザーOnSelectedIndexChangedを追加します(イベントハンドラー内でコードを実行するためにプログラムで)。

16
Sinatr

同じアイテムに対してイベントを再起動するのは奇妙に思えます。これはおそらく、イベントハンドラロジックを再実行したいだけだからです。 SelectionChangedロジックを新しいメソッドに抽出し、それをプログラムで呼び出さないのはなぜですか?

27
atomaras