3

タブコントロールのタブに対応する4つのアイテムを含むコンボボックスがあります。ユーザーがコンボボックスからアイテムを選択すると(左クリックしてもう一度左クリックしてアイテムを選択)、タブコントロールの対応するタブページが選択されます。タブページは自動スクロールに設定されていますが、この方法でタブページを選択すると、マウスホイールのスクロールは機能しません。(そのタブページ内のコントロールを手動でクリックすると、マウスホイールでスクロールできます。)

ユーザーがマウスホイールを使用して同じコンボボックスからアイテムを選択した場合(および対応するタブページに制御が正常に渡された場合)、マウスホイールのスクロールはそのタブページで正常に機能し、理由がわかりません。

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

1 に答える 1

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を呼び出します。

于 2010-12-29T03:54:54.293 に答える