Я работаю над приложением, требующим необычных пользовательских элементов управления. Наследование от класса .net Control вызвало различные проблемы и со временем усложняет задачу. Я не буду вдаваться в подробности здесь, но я создаю свою собственную облегченную архитектуру управления, чтобы избежать некоторых из этих проблем. Вещи работают хорошо, но мне нужно добавить в свою архитектуру функцию перетаскивания.
Все методы, которые я придумал, кажутся беспорядочными и подверженными ошибкам. Я имитирую класс .net Control разными способами и с большой пользой использую рефлектор .net, но у меня возникла проблема с выяснением, как заставить срабатывать мои события перетаскивания (DragDrop, DragEnter, DragLeave).
Я просто не могу придумать чистый способ спровоцировать эти события. У кого-нибудь есть идеи?
Пока что лучшее, что я придумал, - это реализовать интерфейс IDropTarget и надеяться, которые будут запускать мои события. Они не.
@tamberg: Я прочитал эту статью, и это не совсем то, что я ищу (хотя и спасибо). Моя проблема в том, что я не знаю, как реализовать систему событий. Например, как узнать, когда объект данных перетаскивается через мой класс настраиваемого элемента управления? Как я могу вызвать эти события (DragOver, DragDrop и т. д.)?
Все элементы управления в примере наследуются от System.Windows.Forms.Control, чего я стараюсь избегать.





Просто догадка:
Windows Forms, настраиваемые элементы управления, часть 1. Освоение DragDrop (http://www.codeproject.com/KB/miscctrl/LANDragDrop.aspx)
С уважением, тамберг