- - PR -
ComboBoxのSelectedIndexChangedとSelectionChangeCommittedについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-02-10 23:17
表題が長くて申し訳ありません。
タイトルのイベントに疑問があり、投稿させて頂きます。 疑問とは、SelectedIndexChangedの発生条件です。SelectedIndexChangedはComboBoxのインデックスが変更された際に発生します。このため、Webサービスなどから取得したDataSetを結合した時や、DisplayMemberプロパティに値を割り当てたときなどにも発生します。そのため、下記のようなコードでは何度もSelectedIndexChangedイベントが発生してしまいます。
上記の例ですと、cmbData1にDataSourceを割り当てた時・DisplayMemberにプロパティを与えたときに発生します。何度も呼び出してしまうのです。 対策として「SelectionChangeCommitted」イベントを使用したのですが、SelectionChangeCommittedイベントはIndexを変化させずにComboBoxのItemをクリックしただけで発生してしまいます(そんなには困らないのですが…。 SelectedIndexChangedが発生するのもわかります。実際、なにもバインドされてない状態では-1だったのが0に変化するのですから、イベントは発生すると思います。コード内でデータのバインドを行うような場合は致し方ないのでしょうか? なんか、大きな勘違いをしているような…という気がするため質問させて頂きます。なにかヒント等ありましたら、ご教授いただけますでしょうか。よろしくお願い致します。 [ メッセージ編集済み 編集者: アキミ 編集日時 2004-02-11 00:00 ] | ||||
|
投稿日時: 2004-02-11 11:00
アキミさん、こんにちは。
イベントとイベントハンドラの関連付けを、動的に(というのかな?)行っては如何でしょうか。 必要に応じて AddHandler で登録、RemoveHandler で解除を行えば、イベントハンドラの呼び出しを制御できます。 | ||||
|
投稿日時: 2004-02-12 22:04
きくちゃんさん、こんばんわ。
返信が遅くなってすいません。 なるほど! 確かに、バインド前にイベントを剥がして、バインド後にイベントを 貼り付ければOKですね。全然気がつきませんでした。 さっそく、やってみようと思います。 ありがとうございました! |
1