什么是最简单的确定当前光标位置是否超过特定(WinForm)控件的方法?WinForm控件上的光标(c#,WinForm 4.0)
我可以 - 当然 - 计算控件的位置,然后检查光标位置是否在此rectangel内。但是,也许有已经存在这个东西....
我不能使用OnMouseOver
事件这一点,因为决定必须(另一个)事件中发生。为了进一步解释这里是我做的(伪代码)。问题是,当我开始拖动事件,然后移动到另一个控件(在此之外),释放鼠标完成放置,上下文菜单显示在“错误”控件(放置目标)上。这是我想避免....
private void TableControlMouseDown(object sender, MouseEventArgs e)
{
...
// this is a User control with some sub controls
// when selected start drag and drop
if (SOMEConditions)
{
// start drag and drop operation
DragAndDropWrapper dragAndDropWrapper = new DragAndDropWrapper(this.ObjectsToDrag, this);
this._subControl.DoDragDrop(dragAndDropWrapper, DragDropEffects.Copy);
}
// context menu
// check should go here
// something like "is pt still over "this" or over the drag target ...
Point pt = this._subControl.PointToClient(Control.MousePosition);
this._myContextMenu.Show(this._subControl, pt);
}
什么 - 从今天开始 - 请参见下面的我使用此刻的扩展方法...
打我给它 - 我会说同样的事情:) – 2011-04-11 11:00:13
@Jackson教宗:今天早上发生在我身上三次:) – Marco 2011-04-11 11:02:04
这几乎是一个实时的答案 - 谢谢。这种方法的一个问题是,我需要在同一控制的另一个事件中确定位置。不幸的是,事件的顺序是非确定性的。所以可能会发生MouseLeave事件稍后处理(即使只是很短的时间),并且结果尚不可用。 – 2011-04-11 11:05:39