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


ブルゴーニュ  2009-01-31 15:53:57  No: 141410

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


バーガンディ  2009-01-31 20:09:41  No: 141411

可能です。


ブルゴーニュ  2009-02-01 01:16:28  No: 141412

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


  2009-02-01 01:42:56  No: 141413

参考までに。

渡す側
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-02-01 02:01:55  No: 141414

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

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


  2009-02-01 04:24:29  No: 141415

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


ブルゴーニュ  2009-02-01 10:40:04  No: 141416

あさん、ありがとうございます。
リストボックスからリストボックスへのドラッグアンドドロップについて、以下に参考がありましたので、ドラッグするところまでは何とかできました。
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大きい数値を得たいのですが、どのようにすればよいでしょうか?
あるいは、方法が間違っているでしょうか?
よろしくお願いします。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加