как захватить движущийся customcontrol - PullRequest
0 голосов
/ 20 мая 2011

Я пытаюсь объяснить мою проблему:

Я получил много пользовательских элементов управления одного типа на панели.

Во время выполнения я могу свободно перемещать любой custumcontrol (события mousedown и mousemove) в форме с помощью мыши над любыми другими настраиваемыми элементами управления с помощью метода taketofront (), чтобы иметь его поверх всех.

Теперь мне нужнознать, когда перемещаемый элемент управления находится над любым другим элементом управления, а какой элемент управления находится под ним.

До сих пор я пытался использовать события перетаскивания, но безуспешно, есть другой способ сделатьэто или я должен переработать его с помощью событий перетаскивания?

спасибо всем за помощь

и извините за мой английский.

РЕДАКТИРОВАТЬ:

Средства управления - это карточная игра, и моя последняя цель - использовать карточки для создания логической последовательности, следуя правилам, основанным на стоимости и / или цвете карточки.

1 Ответ

1 голос
/ 20 мая 2011

Вы не можете решить проблему с помощью перетаскивания, потому что вы на самом деле не сбрасываете один элемент управления на другой элемент управления.Вы просто перемещаете их в форме.

Вам необходимо ознакомиться с Z order , который представляет собой расположение объектов в виртуальном трехмерном пространстве.Чтобы настроить порядок Z, вы можете вызвать методы BringToFront и SendToBack любого объекта, производного от System.Windows.Forms.Control.

Порядок Zтакже выставляется родительским (контейнером) элементом управления Controls коллекция .Используя GetChildIndex метод , вы можете определить положение любого элемента управления в Z-порядке.

Итак, теперь все, что вам нужно сделать, это выяснить, какой элемент управления вы используетеперетаскивание закончено.Сделайте это, сравнив Location свойства двух элементов управления.Когда вы знаете, что местоположения двух элементов управления перекрываются, проверьте их соответствующие индексы Z-порядка, чтобы увидеть, какой из них находится сверху.

...