如何使MouseWheel在滚动条上工作

时间:2012-11-06 14:42:54

标签: c# events scrollbar mousewheel

我在C#中运行应用程序,我需要为滚动条添加鼠标滚轮功能。

我在需要滚动的窗口中的某些控件上设置了Focus()。而且,它不起作用。但是,如果最小化应用程序并再次最大化并滚动而没有任何其他点击它工作。

如果我单击任何其他控件,我无法使用滚动条上的鼠标滚轮功能。另外,我将Refresh()置于某些控件上。

问题是什么,解决方案是什么?

2 个答案:

答案 0 :(得分:1)

它会产生滚动问题,而不是滚动位置被重置,而是父容器将自己滚动到用户控件的左上角。

要避免这种情况,您必须覆盖ScrollToControl方法。扩展System.Windows.Forms.Panel并覆盖ScrollToControl方法。

示例代码:

class CustomScrollBarPanel : System.Windows.Forms.Panel
{
    protected override Point ScrollToControl(Control activeControl)
    {
        return this.AutoScrollPosition;
    }
}

然后使用它。

答案 1 :(得分:0)

添加MouseHover事件处理程序和Focus()滚动条:

this.panel1.MouseHover += new System.EventHandler(panel1_MouseHover);

private void panel1_MouseHover (object sender, EventArgs e)
{
    this.vScrollBar1.Focus();
}