C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: ドラックを開始したコントロールをドロップ先で取得


(過去ログ 83 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■49041 / inTopicNo.1)  ドラックを開始したコントロールをドロップ先で取得
  
□投稿者/ hs (190回)-(2010/04/20(Tue) 23:03:21)

分類:[VB.NET/VB2005 以降] 

VB2008
いつもお世話になってます。

ユーザーコントロールを作成しました。
そのユーザーコントロールをパネル内に複数配置しています。

その内の1つをドラックアンドドロップで破棄(Disporse)したいのですが、
どのようにドラック開始元のコントロールをドロップ先で取得すればよいか分かりません。

よろしくお願いします。
引用返信 編集キー/
■49042 / inTopicNo.2)  Re[1]: ドラックを開始したコントロールをドロップ先で取得
□投稿者/ Hongliang (609回)-(2010/04/20(Tue) 23:33:59)
DoDragDrop メソッドに渡す data に、ドラッグ開始したときのコントロールも突っ込んであげれば良いんじゃないでしょうか。Object 配列にして 0 番目に本来のデータ、1 番目にドラッグ開始元コントロール、とか。
引用返信 編集キー/
■49045 / inTopicNo.3)  Re[2]: ドラックを開始したコントロールをドロップ先で取得
□投稿者/ hs (191回)-(2010/04/21(Wed) 01:17:51)
No49042 (Hongliang さん) に返信

> DoDragDrop メソッドに渡す data に、ドラッグ開始したときのコントロールも突っ込んであげれば良いんじゃないでしょうか。
> Object 配列にして 0 番目に本来のデータ、1 番目にドラッグ開始元コントロール、とか。

Private Sub UserControl_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
  If e.Button = Windows.Forms.MouseButtons.Left Then
    Dim obj() As Object = {Me.TextBox1.Text, Me}
    Me.DoDragDrop(obj, DragDropEffects.All)
  End If
End Sub

ということででしょうか?

この場合、ドロップ先objは受け取れるのでしょうか?
色々調べては見たのですが、TextとFileDropのデータ以外の受け取り方が見つかりませんでした。




引用返信 編集キー/
■49047 / inTopicNo.4)  Re[3]: ドラックを開始したコントロールをドロップ先で取得
□投稿者/ Hongliang (611回)-(2010/04/21(Wed) 01:24:36)
e.Data であるところの IDataObject が持っている GetData メソッドで、GetType(Object()) を渡せば、DoDragDrop に渡した Object 配列を取得できます。
引用返信 編集キー/
■49048 / inTopicNo.5)  Re[4]: ドラックを開始したコントロールをドロップ先で取得
□投稿者/ hs (192回)-(2010/04/21(Wed) 02:16:51)
No49047 (Hongliang さん) に返信

> e.Data であるところの IDataObject が持っている GetData メソッドで、GetType(Object()) を渡せば、DoDragDrop に渡した
> Object 配列を取得できます。

以下の通りで、実現できました。

'ドラッグ
Private Sub UserControl_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
  If e.Button = Windows.Forms.MouseButtons.Left Then
    Dim obj() As Object = {Me.TextBox1.Text, Me}
    Me.DoDragDrop(obj, DragDropEffects.All)
  End If
End Sub

'ドロップ
Private Sub ○○_Division_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) ...
  If MessageBox.Show(obj(0) & "を削除します。", "Title", OKCancel, MessageBoxIcon) = OK Then
    Dim obj As Object = e.Data.GetData(GetType(Object()))
    Dim Uobj As UserControl = obj(1)
    Uobj.Dispose()
  End If
End Sub

ありがとうございました。
また何かあった時は、よろしくおねがいします。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -