0

我有一个 MDI 容器窗口和一个包含简单选项卡控件的辅助窗口。我已经相应地设置了属性以将选项卡拖放到 MDI 容器窗口。

DragDrop 处理程序最终触发,但是“发送者”对象不是我在执行时所期望的:

debug.print(sender.toString)

我期待源对象,选项卡控件引用,但看起来“发件人”是 MDI 主应用程序窗口。我如何覆盖它或我缺少什么设置?

我应该注意这是我的初始化代码:

Private Sub tabContainer_MouseDown(sender As Object, e As MouseEventArgs) Handles tabContainer.MouseDown
    tabContainer.DoDragDrop(CType(sender, TabControl), DragDropEffects.Move)
End Sub

这使我相信,当 DragDrop 被捕获在 MDI 容器窗口中时,“发送者”实际上是 TabControl ???

亚历克斯

4

1 回答 1

1

不,事件的发送者将始终是收到 DragDrop 通知的控件。这就是你的 MDI 容器,因为那是你放开按钮的地方。

D+D 中没有机制来识别被拖动对象的来源。在设计上,它可能来自一个完全无法企及的完全不同的过程。如果您需要除被拖动对象之外的任何其他信息,那么您需要将其添加到对象中。只要 D+D 在一个应用程序中,这根本不是问题,您可以创建一个小助手类来存储您需要的任何内容。

于 2013-02-21T18:10:32.927 回答