Jef*_*f B 8 .net c# vb.net winforms
shift +滚轮的使用对于水平滚动来说相当常见.
这两个都很容易捕获.我可以使用带有KeyDown,KeyUp事件设置的标志的MouseWheel事件来跟踪按下shift键的时间.
但是,我如何实际触发水平滚动?我知道WM_MOUSEHWHEEL,可以用来触发事件吗?
更新:对于System.Windows.Form
有一个HorizontalScroll
类型的属性HScrollProperties
.您可以操纵该Value
对象上的属性以更改水平滚动条的位置.但是,到目前为止,我还没有发现该对象可用的任何其他控件.
Alv*_*ong 13
如果您要创建自己的控件派生自UserControl
或ScrollControl
或Form
,您可以使用这个简单的解决方案:
protected override void OnMouseWheel(MouseEventArgs e)
{
if (this.VScroll && (Control.ModifierKeys & Keys.Shift) == Keys.Shift)
{
this.VScroll = false;
base.OnMouseWheel(e);
this.VScroll = true;
}
else
{
base.OnMouseWheel(e);
}
}
Run Code Online (Sandbox Code Playgroud)
如果控件具有AutoScroll
并且正在显示滚动条,则滚动鼠标滚轮时将出现以下行为:
注意到这种行为,我想出了这个hack来覆盖OnMouseWheel
控件,然后如果垂直滚动条被启用并被Shift按下,它会在调用之前禁用垂直滚动条base.OnMouseWheel
.这将在滚动水平滚动条时欺骗控件(行为3如上所示).
归档时间: |
|
查看次数: |
7499 次 |
最近记录: |