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

2010年07月16日に質問されました。  ·  閲覧回数 83.1k回  ·  ソース

StackTrace picture
2010年07月16日

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

回答

arbiter picture
2010年07月17日
147

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

Shantanu Gupta picture
2010年07月16日
13

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);
Ranjith picture
2012年12月13日
6

必ず設定してくださいDataSourceあなたに財産をonload()割り当てた後の関数ValueMemberDatamemberプロパティを。

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

user195488 picture
2010年07月17日
5

Form読み込みが完了したことを示すbooleanフラグを設定してみませんか?

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

Paulos02 picture
2015年08月18日
1

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
Mohamed Nagieb picture
2020年09月06日
0

コードをほとんどそのままにしておく簡単な解決策は次のとおりです。

SelectedIndexChangedイベントで、myComboBoxハンドルが( IsHandleCreated )メソッドを使用して作成されているかどうかを確認します。 もう1つの追加チェックは、ユーザーが実際にコンボボックスコントロールに焦点を合わせて、選択したインデックスを変更しているかどうかをチェックすることです。

 private void myComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (myComboBox.IsHandleCreated &&  myComboBox.Focused)
        {
           // Do something here
        }
    }
Anjan Kant picture
2016年08月04日
-1

それは次のコードで私のために働いた:

  private void ddlChapter_SelectionChangeCommitted(object sender, EventArgs e)
    {
        if (ddlChapter.SelectedValue != null)
        {
           // Do something here
        }
    }