- PR -

TreeViewのドラッグ アンド ドロップについて

1
投稿者投稿内容
sou
ベテラン
会議室デビュー日: 2002/09/25
投稿数: 56
投稿日時: 2003-08-26 20:01
こんばんは。

System.Windows.Forms.TreeViewクラスについて質問があります。
同一のTreeView内でTreeNode間のドラッグ アンド ドロップ機能の
実装を目指しています。
(エクスプローラのフォルダビューみたいに)

ドラッグ アンド ドロップ機能は実現できているのですが、
ドラッグ操作が行われている間に、
TreeNodeの上にカーソルが来たらTreeNodeを展開したり、
TreeNodeが表示されるようにスクロールさせたりしたいのです。
(これまたエクスプローラみたいに)
ヘルプを調べると、
QueryContinueDragイベントを使用すればいいような感じですが、
このイベントをTreeViewに設定しても、
ドラッグ操作中にこのイベントが発生していないようなんです。
どなたか対処方法をご存知の方、ご教示お願いします。


[ メッセージ編集済み 編集者: sou 編集日時 2003-08-26 22:16 ]
mei
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 114
投稿日時: 2003-08-27 00:05
引用:

souさんの書き込み (2003-08-26 20:01) より:ドラッグ操作が行われている間に、
TreeNodeの上にカーソルが来たらTreeNodeを展開したり、
TreeNodeが表示されるようにスクロールさせたりしたいのです。
(これまたエクスプローラみたいに)


DragOverイベントを使えば良いのではないでしょうか?
イベント自体は定期的に呼ばれるのでカウンタでも用意して小細工すれば、
ちょっと待ってからツリーを展開させるとか出来そうです。

スクロールは下方向は勝手にやってくれますが、
上方向はコーディングが必要だと思います。
#EnsureVisibleあたりでなんとかなりそうですが・・・
sou
ベテラン
会議室デビュー日: 2002/09/25
投稿数: 56
投稿日時: 2003-08-27 20:42
meiさんありがとうございます。
DragOverイベントを処理して実現できました。

ツリーの展開はTimer クラスを使用して実現できました。
スクロールはマウスがTreeViewから外れた場合に、
PrevVisibleNodeとNextVisibleNodeを取得して、
EnsureVisibleメソッドで表示させました。

1

スキルアップ/キャリアアップ(JOB@IT)