gpt4 book ai didi

c# - Shift + 鼠标滚轮水平滚动

转载 作者:太空狗 更新时间:2023-10-29 18:12:31 26 4
gpt4 key购买 nike

shift + 滚轮的使用对于水平滚动是相当普遍的。

这两个都相当容易捕获。我可以将 MouseWheel 事件与由 KeyDown 和 KeyUp 事件设置的标志一起使用,以跟踪按下 shift 键的时间。

但是,我如何真正触发水平滚动?我知道 WM_MOUSEHWHEEL,它可以用来触发事件吗?

更新:对于 System.Windows.Form,有一个类型为 HScrollPropertiesHorizo​​ntalScroll 属性。您可以操纵该对象的 Value 属性来更改水平滚动条的位置。但是,到目前为止,我还没有发现该对象可用的任何其他控件。

最佳答案

如果您正在创建自己的从 UserControlScrollControlForm 派生的控件,您可以使用这个简单的解决方案:

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);
}
}

解释

如果控件具有 AutoScroll 并且显示滚动条,当您滚动鼠标滚轮时,您将获得以下行为:

  1. 如果没有启用滚动条,它什么都不做。
  2. 如果只启用垂直滚动条,它会滚动垂直滚动条。
  3. 如果只启用水平滚动条,它会滚动水平滚动条。
  4. 如果同时启用垂直和水平滚动条,它会滚动垂直滚动条。

注意到这种行为,我想出了这个 hack 来覆盖控件的 OnMouseWheel,然后如果启用垂直滚动条并且按住 Shift,它会禁用垂直滚动条调用 base.OnMouseWheel 之前的滚动条。这将欺骗控件滚动水平滚动条(如上所示的行为 3)。

关于c# - Shift + 鼠标滚轮水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7828121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com