在C#中选择选项卡后,如何使用滚轮滚动选项卡控件

时间:2014-08-19 20:36:13

标签: c#

在我的应用程序中有许多组合框控件。我想水平滚动以访问所有组合框。但问题是当我在标签控件中选择一个特定的标签页时,它无法使用鼠标滚轮滚动浏览,但在我选择该标签控件内的内容后,它允许我使用滚轮滚动。

有人可以给我一个解决方案,详细说明我应该在哪里放置代码部分?

谢谢!

{
    private IContainer components;

    public Form1()
    {

        InitializeComponent();
     // tabControl2.Click += (s, e) => tabControl2.Focus();

    }


    protected override void Dispose( bool disposing )
    {
        if( disposing )
        {
            if (components != null) 
            {
                components.Dispose();
            }
        }
        base.Dispose( disposing );
    }

1 个答案:

答案 0 :(得分:3)

我假设您在winforms下执行此操作。

这是因为Tab控件被视为容器,因此除非明确这样做,否则不会获得焦点。

试试这个:

public Form1()
{
    InitializeComponents();
    // register the event handler here
    tabPage.Click += (s, e) => tabPage.Focus(); // this line can be omitted
    tabPage.MouseEnter += (s, e) => tabPage.Focus();
}

以上是仅适用于一个标签的代码,如果您希望它适用于标签控件中的所有标签,只需使用foreach订阅所有标签页的MouseEnter事件:

public Form1()
{
    InitializeComponents();

    foreach (TabPage tabPage in TabControl.TabPages)
    {
        tabPage.MouseEnter += (s, e) => tabPage.Focus();
    }
}

如果你有一些动态创建的标签页,也为他们订阅MouseEnter事件:)