プロが教える店舗&オフィスのセキュリティ対策術

現在、VB2005においてアプリケーションを開発しています。

よく、リストボックスなどにドラッグ&ドロップしてパスを入力させる
方法がありますが、これの逆?をやりたいと思っております。

つまり、「すでにリストボックスなどに入力されたアイテムをフォームのそと
にドラッグ&ドロップさせた場合にリストボックスからそのアイテムを
さくじょする」という動作です。

フォームの外であることをどのように判断してよいかわからないため、
MouseUp,DragDropのイベントを受け取ることができません。

よろしくお願いします。

A 回答 (2件)

QueryContinueDragイベントで対応ってことになりそうですよ



フォームレベルにどのアイテムをDragしたのかを保存しておく変数を用意します
Dim nItem as integer

Drag開始時に
nItem = ListBox1.SelectedIndex
といった感じで...

QueryContinueDragイベントで
if e.Action = DragAction.Drop then
Dim pt As Point = ListBox1.PointToClient(ListBox1.MousePosition)
' ListBox1以外でドロップされた場合
' フォーム以外ならListBox1をForm1などに置き換えてください
if ListBox1.ClientRectangle.Contains(pt)=False then
ListBox1.Items.RemoveAt( nItem )
end if
end if

といった具合でしょう ...
    • good
    • 0
この回答へのお礼

上記の方法でできました。

助かりました。ありがとうございます。

お礼日時:2007/01/16 15:14

テキストボックスの内容をドラッグドロップしてコピーするには



Private Sub TextBox1_MouseDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles TextBox1.MouseDown
TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.Copy)
End Sub

こんな感じになります。
メモ帳などに入力されたテキストがドラッグドロップできます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!