- - PR -
コンボボックスのSelectedIndexChangedイベントを発生させないには?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-09-09 18:10
いつもお世話になります。
只今、VB.netでWinアプリを開発中です。早速ですがみなさんのお知恵を拝借したいのですが、 フォームにコンボボックスがありあるマスターテーブルAのキー項目が格納されています。 このコンボボックスを選択すると、SelectedIndexChangedイベントに記述した処理によって、マスターテーブルAの各フィールドより取得した項目をフォーム上のテキストボックスに表示しています。 普段はこれで良いのですが、あるテーブルBからこれまでの実績等を読み込んでフォームに表示する際にコンボボックスとそれに関連するテキストボックスの表示を別々にしたいのです。 例えばマスターテーブルAのキー項目が『AA』であるフィールドの値が『AB』であったとしてもコンボボックスには『AA』、テキストボックスには『CC』と表示したいのです。しかしながらコンボボックスに『AA』と設定した時点でSelectedIndexChangedイベントによりテキストボックスには『AB』と表示されてしまいます。 これを回避したいのですが何か良い方法はありますでしょうか?コンボボックスのTagプロパティが使えそうな気がするのですが上手い方法が思い浮かびません。よろしくご教授ねがいます。 | ||||
|
投稿日時: 2004-09-09 19:46
こんにちは。
コンボボックスのイベントを一時的に無効化すれば実現できると思います。 イベントの解除および再関連付けは、RemoveHandlerとAddHandlerを使います。 以下のような感じです。 ------------------------------ RemoveHandler ComboBox1.SelectedIndexChanged, AddressOf Me.ComboBox1_SelectedIndexChanged '表示処理 AddHandler ComboBox1.SelectedIndexChanged, AddressOf Me.ComboBox1_SelectedIndexChanged ------------------------------ これで表示処理している間にコンボボックスの選択が変わってもイベントが発生しません。 # 久しぶりにVB使ったら変数宣言も分からなくなってた自分がイヤ。。。 # C#と違って+=や-=が使えないのね。 | ||||
|
投稿日時: 2004-09-09 20:18
noderaさん、こんにちは。ご返信ありがとうございます。
僕の求めていた答えそのものです。ドンピシャでした。便利ですねー。本当はイベントハンドラをさわりたかったのですが、ちょっと解らなかったので・・・。Handles 〜 は、たまに使ってたんですが・・。これですっきりです。 どうもありがとうございました。 | ||||
|
投稿日時: 2004-09-10 10:24
VB.NETは連結演算子使えるようになりましたよ♪ |
1