有什么方法可以将 Winforms 面板设置为水平滚动而不是垂直于鼠标滚轮?
Is there any way to set a Winforms panel to scroll horizontal rather than vertical to mouse wheel?
我有一个 FlowLayoutPanel,它从上到下然后从左到右布置它包含的控件,这样通常它不会有垂直滚动条,只有水平滚动条。因此,当您使用鼠标滚轮时,它会水平滚动。太好了。
直到用户长出一个比屏幕还高的控件...然后它必须有一个垂直滚动条。美好的。但是一旦垂直滚动条出现,鼠标滚轮输入就会开始垂直滚动。不好。
那么,有什么方法可以告诉 FlowLayoutPanel 或滚动条鼠标滚轮应该始终表示水平?
或者告诉它先到水平条,然后只有在没有水平条时才到垂直条?
子类 FlowLayoutPanel
并覆盖 OnMouseWheel
方法。不要调用 base
方法。复制并粘贴此方法的代码的下半部分:
感谢 Loathing 的优秀建议,我也将其标记为答案,我选择简单地检测两个滚动条都打开的情况,在这种情况下,在我调用 base 时暂时关闭 VScroll class的方法。
为什么?因为我担心不调用基本 class 方法的后果,因为您指向该代码的评论……这显然很重要。
我没有看到此解决方案有任何闪烁或其他不良后果,但如果有我应该考虑的缺点,请告诉我。
protected override void OnMouseWheel(MouseEventArgs e)
{
if (this.PreferHorizontalScroll && this.VScroll && this.HScroll)
{
this.VScroll = false;
base.OnMouseWheel(e);
this.VScroll = true;
}
else
{
base.OnMouseWheel(e);
}
}
我有一个 FlowLayoutPanel,它从上到下然后从左到右布置它包含的控件,这样通常它不会有垂直滚动条,只有水平滚动条。因此,当您使用鼠标滚轮时,它会水平滚动。太好了。
直到用户长出一个比屏幕还高的控件...然后它必须有一个垂直滚动条。美好的。但是一旦垂直滚动条出现,鼠标滚轮输入就会开始垂直滚动。不好。
那么,有什么方法可以告诉 FlowLayoutPanel 或滚动条鼠标滚轮应该始终表示水平? 或者告诉它先到水平条,然后只有在没有水平条时才到垂直条?
子类 FlowLayoutPanel
并覆盖 OnMouseWheel
方法。不要调用 base
方法。复制并粘贴此方法的代码的下半部分:
感谢 Loathing 的优秀建议,我也将其标记为答案,我选择简单地检测两个滚动条都打开的情况,在这种情况下,在我调用 base 时暂时关闭 VScroll class的方法。
为什么?因为我担心不调用基本 class 方法的后果,因为您指向该代码的评论……这显然很重要。
我没有看到此解决方案有任何闪烁或其他不良后果,但如果有我应该考虑的缺点,请告诉我。
protected override void OnMouseWheel(MouseEventArgs e)
{
if (this.PreferHorizontalScroll && this.VScroll && this.HScroll)
{
this.VScroll = false;
base.OnMouseWheel(e);
this.VScroll = true;
}
else
{
base.OnMouseWheel(e);
}
}