【发布时间】:2013-01-26 16:22:13
【问题描述】:
我正在测试以下代码:
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
Rectangle leftRect = new Rectangle(0, 0, 32, this.Height);
if (leftRect.Contains(e.Location))
{
MessageBox.Show("Hello World");
}
}
这个想法是,当鼠标进入一个 32 像素宽的区域时,在容器控件的左侧,会出现一条消息(好的,在 R/L 中它会做其他事情,但这只是暂时的测试)。
问题是当子控件填充矩形区域时,ContainerControl 没有收到 MouseMove 事件,因为它正在由子控件处理。
所以我的问题是,如何让我的 ContainerControl 接收 MouseMove 事件,即使它的子级填充相同的矩形区域?
【问题讨论】:
-
@JohnKoerner 可能需要注意的是,强制子控件透明会完全将它们从事件链中删除 - 您将失去每个子控件拥有自己的
MouseMove代码的能力,因为事件直接钻到父控件。下面的方法允许子控件保留处理移动事件的能力,但也可以将事件冒泡到顶部控件。
标签: c# .net mouseevent gdi+ gdi