1

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

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

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

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

4

2 回答 2

1

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

为避免这种情况,您必须重写该ScrollToControl方法。扩展System.Windows.Forms.Panel并覆盖ScrollToControl那里的方法。

示例代码:

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

然后使用它。

于 2017-02-15T08:55:21.830 回答
0

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

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

private void panel1_MouseHover (object sender, EventArgs e)
{
    this.vScrollBar1.Focus();
}
于 2016-05-11T04:21:32.827 回答