MouseWheel事件不会在非可选控件上触发

时间:2018-09-02 17:32:33

标签: c# winforms scroll mousewheel

我已经根据其他代码编写了一个自定义控件,其中包括对SetStyle(ControlStyles.Selectable, false);

的调用

这可以防止以下代码被调用(如果我删除了上面的行并首先单击“控件”以使其“聚焦”,则可以使用该代码):

    protected override void OnMouseWheel(MouseEventArgs e)
    {
        ScrollBar.Value = Math.Min(ScrollBar.Value - e.Delta, ScrollBar.Maximum - ScrollBar.LargeChange);

        LayoutChanged();
    }

我的控件不需要关注,因此Selectable=false是正确的。

我需要做什么,以便无论何时将鼠标移到我的控件上并且无论鼠标在何处都可以移动MouseWheel都可以运行此代码?

感谢您的评论。附加信息:-

  • 我正在运行Windows 7,但是任何解决方案都必须在任何操作系统上都可以使用。

  • 该控件通过Control / ControlBase / BaseControl / BaseStyleControl继承,其中后三个是DevExpress控件。

  • 不应仅因为光标悬停在我的控件上而更改真实焦点
  • 除了滚动条(继承自DevExpress的滚动条)之外,没有其他子控件,滚动条通常是不可见的,并且当鼠标悬停在可见位置时会显示自身。
  • 该控件只能绘制自身(想象多个书架一个接一个地搁在书架上,书架上画有书架-架子的数量增加了以容纳所有书,并且滚动条允许所有滚动到视图中。
  • li>
  • 由于这是一个可以在任何地方使用的控件,所以从知道其要求的Parent获取MouseWheel事件不是一个好主意。

  • 也许有一种方法可以注册第一眼(是否是MessagePreview?),以便在正常处理发生之前捏住MouseWheel事件。

0 个答案:

没有答案