我在 C# 中运行一个应用程序,我需要为滚动条添加鼠标滚轮功能。
Focus()
我在需要滚动的窗口中设置了一些控件。而且,它仍然不起作用。但是,如果最小化应用程序并再次最大化并滚动而无需任何其他点击,它就可以工作。
如果单击任何其他控件,则无法使用滚动条上的鼠标滚轮功能。另外,我设置Refresh()
了一些控件。
可能是什么问题,解决方案是什么?
我在 C# 中运行一个应用程序,我需要为滚动条添加鼠标滚轮功能。
Focus()
我在需要滚动的窗口中设置了一些控件。而且,它仍然不起作用。但是,如果最小化应用程序并再次最大化并滚动而无需任何其他点击,它就可以工作。
如果单击任何其他控件,则无法使用滚动条上的鼠标滚轮功能。另外,我设置Refresh()
了一些控件。
可能是什么问题,解决方案是什么?
会产生滚动问题,不是滚动位置被重置,而是父容器自己滚动到用户控件的左上角。
为避免这种情况,您必须重写该ScrollToControl
方法。扩展System.Windows.Forms.Panel
并覆盖ScrollToControl
那里的方法。
示例代码:
class CustomScrollBarPanel : System.Windows.Forms.Panel
{
protected override Point ScrollToControl(Control activeControl)
{
return this.AutoScrollPosition;
}
}
然后使用它。
添加一个 MouseHover 事件处理程序和 Focus() 滚动条:
this.panel1.MouseHover += new System.EventHandler(panel1_MouseHover);
private void panel1_MouseHover (object sender, EventArgs e)
{
this.vScrollBar1.Focus();
}