VB.NET Drag Drop, если объект реализует интерфейс - PullRequest
1 голос
/ 02 сентября 2010

Мне, должно быть, не хватает чего-то простого, но мой мозг вот-вот истечет кровью.

У меня есть интерфейс, ради аргумента под названием 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Ребенок.Я где-то идиот ... но я знаю где.Помощь

1 Ответ

1 голос
/ 03 сентября 2010

Объект Data использует тип в качестве ключа в коллекции. Так выглядит точное совпадение.

Я считаю, что вам нужно проверить, есть ли Object доступный в Data (то есть, абсолютно любой объект), и, если он есть, получить его и проверить, поддерживает ли он интерфейс с TypeOf .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...