Mir*_*pov 4 scrollbar .net-4.0 winforms windows-10
我将焦点放在一个滚动条上vScrollBar.Select();
滚动条变得聚焦但它不会滚动鼠标滚轮.
仅当鼠标光标位于滚动条上时才会滚动.
如何在Select()之后滚动滚动条而不将光标放在滚动条上?
环境:Windows 10,Windows窗体,.NET 4.0
编辑
当我用笔记本电脑触摸板上的两个手指"滚动"时,我注意到滚动条正确滚动,但不是鼠标滚轮.问题可能是因为Windows 10鼠标/触摸板驱动程序?
我刚刚启动并运行Win10,确认.这是在设置>设备>鼠标和触摸板中配置的新Windows 10功能的副作用.它被命名为"当我将鼠标悬停在它们上时滚动非活动窗口",它默认打开. 这个网页提到了它.
这实际上是一个非常好的功能,我个人肯定会保持它,很可能你的用户也会这样.以前的Windows版本将鼠标滚轮消息发送到具有焦点的控件,使许多习惯了鼠标行为的用户神秘化,例如浏览器.请注意滚动条有帮助,它会重新绘制拇指以指示当您将鼠标移开栏时它不再处于活动状态.
修复它在技术上是可行的,您必须将消息重定向回滚动条.什么都不是特别漂亮:
public Form1() {
InitializeComponent();
panel1.MouseWheel += RedirectMouseWheel;
}
private bool redirectingWheel;
private void RedirectMouseWheel(object sender, MouseEventArgs e) {
if (this.ActiveControl != sender && !redirectingWheel) {
redirectingWheel = true;
SendMessage(this.ActiveControl.Handle, 0x020A,
new IntPtr(e.Delta << 16), IntPtr.Zero);
redirectingWheel = false;
var hmea = (HandledMouseEventArgs)e;
hmea.Handled = true;
}
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
Run Code Online (Sandbox Code Playgroud)
但是不要跳枪,你的用户很容易期待Win10的行为,最终:)
| 归档时间: |
|
| 查看次数: |
1631 次 |
| 最近记录: |