web-dev-qa-db-ja.com

フォームがロードされたときにcomboBoxのselectedIndexChangedイベントが発生しないようにします

ドロップダウンリストを提供するComboBoxを持つフォームがあります。 comboBoxのSelectedIndexChanged event、いくつかのコードを実行していますが、フォームの読み込み時にそのコードを実行したくないのです。残念ながら、フォームを読み込むと(コンボボックスで選択を行う前に)、コンボボックスのSelectedIndexChangedが起動します(コンボボックスがdatabindingのときだと思います)。そのような行動を避ける方法はありますか?

71
StackTrace

ユーザーがコンボボックスで選択した項目を変更したときにのみ反応する場合は、 SelectionChangeCommitted にサブスクライブすることをお勧めします。

137
arbiter

単にSelectedIndexChangedイベントのバインドを解除し、fill関数を呼び出して、SelectedIndexChangedイベントを再度バインドできます。残念ながら、これはグリッドでは機能しません。

例えば:

this.cmb.SelectionChanged -= new System.EventHandler(this.cmb_SelectionChanged);
cmb.fill(); //Your function
this.cmb.SelectionChanged += new System.EventHandler(this.cmb_SelectionChanged);
11
Shantanu Gupta

DataSourceプロパティとValueMemberプロパティを割り当てた後、onload()関数でDatamemberプロパティを設定してください。

これは問題を解決するのに役立ちます!

6
Ranjith

booleanの読み込みが完了したことを示すFormフラグがないのはなぜですか?

SelectionChangedイベントで、booleanフラグがtrueであるかどうかを確認します。 trueの場合はイベントを処理し、そうでない場合は無視します。

5
user195488

VB

RemoveHandler lbxNomes.SelectedIndexChanged, AddressOf lbxNomes_SelectedIndexChanged
lbxNomes.DataSource = dst
Label1.Text = String.Format("Encontrados {0} Sócios nesta pesquisa", dst.Rows.Count)
Label1.Visible = True
AddHandler lbxNomes.SelectedIndexChanged, AddressOf lbxNomes_SelectedIndexChanged
1
Paulos02