2010-12-28 34 views
3

私は、タブコントロール内のタブに対応する4つの項目を持つコンボボックスを持っています。ユーザがコンボボックスから項目を選択すると(左クリックして項目を選択するために再度左クリックすることにより)、タブ制御内の対応するタブページが選択される。タブページは自動スクロールに設定されていますが、この方法でタブページが選択されている場合、マウスホイールのスクロールは機能しません。 (そのタブページ内のコントロールを手動でクリックするとスクロールできます)TabControl /ページにフォーカスを渡し、スクロールをスクロールできない

ユーザーがマウスを使用して同じコンボボックスから項目を選択し、コントロールを対応するタブページに正常に渡すと、マウスホイールのスクロールがうまく機能しますタブページと私は理由を把握できません。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    switch (comboBox1.SelectedIndex) 
    { 
     case 0: 
      tabControl1.SelectedTab = tabPage3; 
      tabPage3.Focus(); 
      break; 
    } 
    ... 
} 
+0

あなたが何を記述しているのか分かりません。ユーザーがコンボボックスから項目を選択すると、そのコンボボックスにフォーカスが当てられます。つまり、すべてのマウススクロールイベントがコンボボックスをスクロールして、選択した項目を変更します。 'TabPage'をスクロールすることを期待してはいけません。そして、あなたが投稿したコードは、その質問と何が関係していますか?あなたの質問を編集してさらに明確にすることができますか? –

+0

よく、コンボボックスで選択すると、コードはtabpage3.Focus();で正しいタブページにフォーカスを移動します。ライン。他に関連するコードはありません。 – bsorin

+0

ああ、問題はそのコードスニペットにありますか?それは私の質問からは全く分かりません。あなたの実際のコードのスペルミスはありますか? (常にIDEからStackOverflowの質問にコピーして貼り付けるか、間違ったものをデバッグします!) –

答えて

2

私はこの問題を再現できません。コントロールをクリックして問題を修正したときと同じように、ページの最初のコントロールにフォーカスを設定することが役立ちます。そして、後で、コンボボックスイベントが完了した後に行います。

private void setFocusToPage(TabPage page) { 
     var ctl = page.Controls.Count > 0 ? page.Controls[0] : page; 
     this.BeginInvoke((MethodInvoker)delegate { ctl.Focus(); }); 
    } 

SelectedIndexChangedイベントハンドラのFocus()メソッドではなく、setFocusToPageを呼び出します。

+0

これは素晴らしい結果でした。ありがとうございました。 – bsorin

関連する問題