让鼠标在完整面板上输入事件c#

时间:2013-01-29 07:45:14

标签: c# winforms events

所以我所拥有的是一个使用DockStyle.Top以编程方式填充自定义控件的面板。

当鼠标光标进入面板时,我需要的是让面板以某种方式获得焦点,以便用户可以使用鼠标滚轮滚动面板。

我真的不想给每个控件一个处理程序,因为可能有数百个控件。

一种方法是检查鼠标位置并检查面板是否包含它,这可能需要一个额外的线程或鼠标钩,但也许有更好的方法?

1 个答案:

答案 0 :(得分:2)

您可以将Amen Ayach发布的MouseDetector class作为answer实施为类似问题,并在鼠标悬停时激活表单:

void m_MouseMove(object sender, Point p)
{
    Point pt = this.PointToClient(p);
    if (this.ClientSize.Width >= pt.X &&
                    this.ClientSize.Height >= pt.Y &&
                    pt.X > 0 && pt.Y > 0)
    {
        this.Activate();
    }
}

您还应将Panel的{​​{1}}值设置为AutoScroll

true