【发布时间】:2010-09-02 19:51:14
【问题描述】:
我必须错过一些简单的东西,但我的大脑快要为此流血了。
为了参数,我有一个名为 MyInterface 的接口。
我有一个控制类,我们将其命名为“父类”,它实现了 MyInterface。
我有另一个继承父控件的类,称为“子”
我有一个最终的控制类,我们称之为“容器”,它接受将父级拖到它上面。
Container for 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
我想修改它,不仅接受 Parent,而且接受任何实现 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。我在某个地方是个白痴……但我不知道在哪里。帮忙?
【问题讨论】:
标签: vb.net interface drag-and-drop