タイトルは私の問題をよく表しています。私の問題のもう少し詳細な説明は次のとおりです。UserControl内のオブジェクトでDragDropイベントが発生しません(ただし、DragEnterは行います)
実行時にTabPagesで作成するTabControlでアプリケーションを構築しています。コードの最初のバージョンでは、これらのTabPageは子リストビューで埋められました。 ListViewは、AddHandlersを使用してDragEnterおよびDragDropルーチンにリンクするコードでも作成されました。すべてがうまくいきました...
これで、すべてのコントロールをコードで作成するのではなく、ListViewといくつかのボタンを含むUserControlを作成しました。 TabPage。
今DragDropイベントが
DragEnter
イベントはもう発生しませんされていることを問題 - > OK上げDragOver
イベント - > OK上げDragLeave
イベント - > OK上げDragDrop
イベント - >が発生していません!
この問題は私を夢中にしています。
私は、コードは任意の助けになるだろうが、最初のコメントに答えることはないと思う: 最初のバージョン:コードで作成されたコントロール(作品):
Dim NewTab As New TabPage(TextBox1.Text)
Dim NewListView As New ListView()
Dim NewImageList As New ImageList()
'Organise les nouveaux contrôles
NewListView.Parent = NewTab
NewListView.Dock = DockStyle.Fill
NewListView.View = View.LargeIcon
NewListView.LargeImageList = NewImageList
NewListView.AllowDrop = True
AddHandler NewListView.DoubleClick, AddressOf ListViewItem_DblClick
AddHandler NewListView.DragEnter, AddressOf ListViewItem_DragEnter
AddHandler NewListView.DragDrop, AddressOf ListViewItem_DragDrop
TabControl1.TabPages.Add(NewTab)
TabControl1.SelectTab(NewTab)
NewImageList.ImageSize = New Size(100, 100)
NewImageList.ColorDepth = ColorDepth.Depth24Bit
TabControl1.Refresh()
第二版:ユーザーコントロール はまず、AnnoncesListView
が含まれているユーザーコントロールTabAnnoncesContent
を、想像し、そしてAnnoncesImageList
Dim NewTab As New TabPage(TextBox1.Text)
Dim NewTabContent As New TabAnnoncesContent()
NewTabContent.Parent = NewTab
NewTabContent.Dock = DockStyle.Fill
TabControl1.TabPages.Add(NewTab)
TabControl1.SelectTab(NewTab)
TabControl1.Refresh()
:(動作しません)その後、
私が持っている私のTabAnnoncesContent
クラスコード内部:
Private Sub AnnoncesListView_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles AnnoncesListView.DragDrop
Dim selection As ListViewItem = sender.HitTest(sender.PointToClient(New Point(e.X, e.Y))).Item
If (selection IsNot Nothing) Then
MsgBox("D&D received -> " & e.Data.GetData(DataFormats.Text))
End If
End Sub
Private Sub AnnoncesListView_DragEnter(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles AnnoncesListView.DragEnter
If (e.Data.GetDataPresent(DataFormats.Text)) Then
' Display the copy cursor.
e.Effect = DragDropEffects.Link
Else
' Display the no-drop cursor.
e.Effect = DragDropEffects.None
End If
End Sub
AnnonceListView_DragEnter
ルーチン私はテキストとリストビューを入力するときに実行されますが、私はマウスを離すと、その後、AnnonceListView_DragDrop
イベントが発生されることはありません。
「動作しません」と診断することは不可能です。このような質問。コードスニペットを投稿します。 –
私は要求通りにコードを追加しましたが、私はそれがどんなヘルプ(標準のドラッグアンドドロップコード)であろうと非常に疑念があります。私はAllowDropプロパティのような何かがここにTrueを設定し、そこにFalseか何かを設定する必要があると期待していました。 – Federico
"First chance exception"通知を出力ウィンドウで探します。 Debug + Exceptionsを選択した場合は、CLR例外のThrownボックスにチェックを入れて、デバッガを停止させます。ヒットテストのコードは、それらを投げる予定です。 –