Каков самый простой способ определить, находится ли моя текущая позиция курсора над определенным (WinForm) элементом управления?
Я могу - конечно - рассчитать положение элемента управления и затем проверить,позиция курсора находится внутри этого прямоугольника.Но, возможно, что-то уже существует для этого ...
Я не могу использовать для этого событие 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);
}
- на сегодняшний день - см. Ниже метод расширения, который я использую в данный момент ...