2012-04-07 3 views
0

問題 - カスタムコンボボックスを「ON」に設定すると、一時的に「ON」に変更されますが、時々「OFF」に切り替わります。カスタムWindows.Forms.ComboBoxのデバッグ

基本的に、私は方法があります。私は「ON」と、それは、選択されたインデックス「ON」のコードパスを実行するためのコンボボックスを設定した後

void value_SelectedIndexChanged(object sender, EventArgs e) 
{ 

    if((ComboBox)sender.Focused == true) 
    { 
     if(value.SelectedIndex == false) // OFF 
     // set a bunch of variables for OFF 
     else // ON 
     // set a bunch of variables for ON 
    } 
} 

をしかし、選択されたインデックスは「OFF」に切り替わります。理由はわかりません。その結果、OFF変数のコードパスが実行されます。

これを修正しようとすると、この "value_SelectedIndexChanged"メソッドが呼び出されるたびに、送信者とEventArgsをキャプチャするためのログステートメントが置かれます。ただし、送信者はクラスと等しく、EventArgsはSystem.EventArgsです。

この問題をデバッグする方法を教えてください。

答えて

0

なぜコードを構造化するのかよくわかりません。それがこの方法より多くの意味がありません:

void value_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    switch(value.SelectedIndex) 
    { 
    case 0: // OFF 
     // set a bunch of variables for OFF 
     break; 
    case 1: // ON 
     // set a bunch of variables for ON 
     break; 
    } 
} 

問題は「OFFの変数の束を設定する」-actionsによって引き起こされている可能性があります。ハンドラにブレークポイントを設定してからすべてを実行することでテストしましたか?

+0

Simon、私はオフ変数を設定するコードを踏んだ。しかし、値のselectedIndexを変更したコードはありませんでした。私はあまりGUIに精通していない。通常、selectedIndexの変更をトリガーするのは何ですか? –

+0

また、ComboBoxにフォーカスが当てられているかどうかをチェックする最初のif文も完全にはわかりません。私はあなたのコードが明らかであることに同意します。 –

+0

選択を任意の方法で変更すると、SelectedIndexプロパティが変更されます。そのため、ComboBoxをバックアップしているデータを変更したり、SelectedItemプロパティなどを変更したりすることによって発生する可能性があります。 メソッドの最後にブレークポイントを追加してシングルステップを実行すると、2番目の変更の原因を示すヒントが得られます。 – Simon

関連する問題