Мне, должно быть, не хватает чего-то простого, но мой мозг вот-вот истечет кровью.
У меня есть интерфейс, ради аргумента под названием MyInterface.
У меня есть контрольКласс, давайте назовем его «Родитель», который реализует MyInterface.
У меня есть другой Класс управления, который наследует Родитель, под названием «Дочерний»
У меня есть окончательный класс управления, позволяющий назвать его «Контейнер»,который принимает перетаскивание родительского элемента на него.
Код в контейнере для Dragover прост, например:
Protected Overrides Sub OnDragOver(ByVal e As System.Windows.Forms.DragEventArgs)
If e.Data.GetDataPresent(GetType(Parent)) Then
e.Effect = DragDropEffects.Move
End If
MyBase.OnDragOver(e)
Refresh()
End Sub
Я хочу изменить это, чтобы не только принимать Родителя, но и принимать ЛЮБОЕкоторый реализует MyInterface.Я не могу понять, как, черт возьми, заставить его работать.
Еще больше сбивает с толку, если я перетаскиваю дочерний элемент в контейнер с кодом, как указано выше (проверяя, не был ли удален родительский элемент), GetDataPresent всегда возвращает false.Я бы подумал, что это сработает, так как Child унаследовал родитель.
В идеале, у меня было бы что-то вроде этого:
Protected Overrides Sub OnDragOver(ByVal e As System.Windows.Forms.DragEventArgs)
If e.Data.GetDataPresent(GetType(MyInterface)) Then
e.Effect = DragDropEffects.Move
End If
MyBase.OnDragOver(e)
Refresh()
End Sub
Но это бомбы и GetDataPresent возвращает false независимо от того, перетащил ли я Parent или aРебенок.Я где-то идиот ... но я знаю где.Помощь