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が1つのアプリ内にある限り、まったく問題はありません。必要なものを保存するための小さなヘルパークラスを作成できます。

于 2013-02-21T18:10:32.927 に答える