リストボックスで選択した値をテキストボックスにドラッグアンドドロップするには?


ブルゴーニュ  2009-01-31 06:53:57  No: 141410  IP: 192.*.*.*

VB2008ですが、以下のようなことをやりたいと思っています。
・リストボックスより、値を選択(複数選択可にする)
・それをテキストボックスのところまでドラッグドロップする。
・そのテキストボックスのカーソルのあるところに値を貼り付ける。
  リストボックスで選択した値が複数ある場合は、カンマ区切りで貼り付ける。
これは可能でしょうか?
よろしくお願いします。

編集 削除
バーガンディ  2009-01-31 11:09:41  No: 141411  IP: 192.*.*.*

可能です。

編集 削除
ブルゴーニュ  2009-01-31 16:16:28  No: 141412  IP: 192.*.*.*

ありがとうございます。
では、具体的にはどのように設定をすればよいでしょうか?
よろしくお願いします。

編集 削除
 2009-01-31 16:42:56  No: 141413  IP: 192.*.*.*

参考までに。

渡す側
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.dodragdrop(VS.80).aspx

渡される側
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.dragenter(VS.80).aspx
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.dragdrop(VS.80).aspx

編集 削除
ブルゴーニュ  2009-01-31 17:01:55  No: 141414  IP: 192.*.*.*

とりあえず、自分で解決した点を書きます。
・リストボックスのMouseDownイベントで、左クリック時にIndexFromPoint(e.X, e.Y)で選択されているindexを調べる。
  (indexがマイナス値ならば処理を抜ける)
・DoDragDropメソッドで、ドラッグの内容を設定する。

その後、テキストボックスにドロップなのですが、テキストボックス上にドラッグしたときに、テキストボックス上にカーソルを表示させ、ドロップ時にカーソルの後ろに値をドロップしたいのですが、どうすればよいのでしょうか?
よろしくお願いします。

編集 削除
 2009-01-31 19:24:29  No: 141415  IP: 192.*.*.*

http://msdn.microsoft.com/ja-jp/library/system.windows.controls.textbox.selectionstart.aspx

編集 削除
ブルゴーニュ  2009-02-01 01:40:04  No: 141416  IP: 192.*.*.*

あさん、ありがとうございます。
リストボックスからリストボックスへのドラッグアンドドロップについて、以下に参考がありましたので、ドラッグするところまでは何とかできました。
http://dobon.net/vb/dotnet/control/draganddrop.html
ただ、テキストボックスにドロップするとき、
・ドラッグしたものをテキストボックス上に持ってきたとき、テキストボックスにカーソルを表示させるようにしたい。
・テキストボックス上にドロップを行ったとき、上記で表示したカーソルの後ろにドラッグした内容を挿入したい
ということをやりたいのです。
テキストボックスではカーソルの表示は無理でしょうか?
また、ドロップする位置を取得するため、ドロップしたいテキストボックスのDragDropイベントで
    pointDrop = TextBox1.PointToClient(New Point(e.X, e.Y))
    intPoint = TextBox1.GetCharIndexFromPosition(pointDrop)
としてintPointをドロップする位置として取得してみましたが、テキストボックスに文字が入力されている場合、
最初の文字の手前でドロップ→intPoint=0
2文字目の手前でドロップ→intPoint=1
3文字目の手前でドロップ→intPoint=2
            ・
            ・
            ・
となるのですが、最後の文字の手前と、最後の文字の後ろ(文字列最後より右側)でドロップを行うと、いずれもintPointは文字列の文字数-1となってしまいます。
最後の文字の後ろでドロップした場合は、最後の文字の前でドロップしたときの値より1大きい数値を得たいのですが、どのようにすればよいでしょうか?
あるいは、方法が間違っているでしょうか?
よろしくお願いします。

編集 削除