DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ツールバーへのドラッグ&ドロップについて

環境/言語:[Windows XP、VisualStudio2005 C#、.NET Framework 2.0以上]
分類:[.NET]

こんにちわ。
お世話になっております。

現在、Windowsアプリケーションを作成しています。
ツールバーの部分を作成しているのですが、どうしても分からない
ことが出てきましたので質問させて頂きます。

やりたいことなのですが、
Visual Studioのメニュー⇒「ツール」⇒「ユーザー設定」
でユーザー設定画面を開いて、「コマンド」タブを開きます。

ここで右枠にコマンド一覧が表示されていると思うのですが、
どれか一つをドラッグしてVisual Studioのツールバーへ
持っていった際に、どの位置にドロップするかというアイビームの
ような線が出ると思います。

この線は、ツールバーのグラフィックスでDrawLineするしかないのでしょうか?
標準のメソッド等は無いのでしょうか?
Web検索をしていましたが、情報が出てきません。

説明が下手で申し訳ありませんが、
どなたかご存知の方はご教示頂けると幸いです。

宜しくお願いします。
> ここで右枠にコマンド一覧が表示されていると思うのですが、
> どれか一つをドラッグしてVisual Studioのツールバーへ
> 持っていった際に、どの位置にドロップするかというアイビームの
> ような線が出ると思います。
>
> この線は、ツールバーのグラフィックスでDrawLineするしかないのでしょうか?
> 標準のメソッド等は無いのでしょうか?
> Web検索をしていましたが、情報が出てきません。

  http://dobon.net/vb/dotnet/control/draganddrop.html

  これ読まれました?

以上。
ToolStripのAllowItemReorderプロパティをTrueにするとToolStripItemをドラッグ&ドロップで並び替えできるようになりますが、これをうまく利用できれば、簡単にできるかもしれません。(つまり、コマンド一覧をToolStripで作るとか...。)
オショウ様
管理人様

回答有難うございます。

タイトルの入れ方とか質問の仕方が悪かったようですみません。汗

ドラッグ&ドロップの機能は完成しているのですが、
ドラッグでツールバー上へアイコンを移動した時に
ドロップする箇所を示す縦線?のようなものを出したいのですが
プロパティなどで出せるものなのかな?
と思い質問させていただきました。

現在は、ツールバーのGraphicsを取得してDrawLineでツールバーの
アイテムとアイテムの間に線を引いています。
(マウスカーソル位置とアイテムのWidthから線を引く位置を割り出してます)
> ドラッグでツールバー上へアイコンを移動した時に
> ドロップする箇所を示す縦線?のようなものを出したいのですが
> プロパティなどで出せるものなのかな?
> と思い質問させていただきました。

AllowItemReorderプロパティをTrueにしてドラッグ&ドロップで並び替えるときに縦線が表示されるため、これが使えるかもしれないと考えて提案させていただきました。これが駄目ということになりますと、やはり自分で描画するしかないと思います。
管理人様

引き続き回答有難うございます。

AllowItemReorderを試そうと、
オショウ様の
http://dobon.net/vb/dotnet/control/draganddrop.html
上記ページのサンプルソース内のListBox2をToolStripに置き換えて
コーディングをしてみたのですがうまく動作してくれません。

なぜかToolStripのDragOverとDragDropイベントが走らない状況です。
コードでイベントを追加したり、デザイナからイベントを追加したり
試してみたのですが動作してくれません。。

単純にコントロールを置き換えてイベント追加しただけなのですが・・・

初心者な質問で申し訳ありませんが、
何か原因に心当たりがありましたら、ご教示お願います。
> AllowItemReorderを試そうと、
> オショウ様の
> http://dobon.net/vb/dotnet/control/draganddrop.html
> 上記ページのサンプルソース内のListBox2をToolStripに置き換えて
> コーディングをしてみたのですがうまく動作してくれません。
>
> なぜかToolStripのDragOverとDragDropイベントが走らない状況です。
> コードでイベントを追加したり、デザイナからイベントを追加したり
> 試してみたのですが動作してくれません。。

AllowItemReorderをTrueにしたときはAllowDropをFalseにしなければならないので、そのようなことはできません。単純に2つのToolStripのAllowItemReorderを両方ともTrueにするだけでOKです。

↓もご覧ください。

ToolStripItemの位置をユーザーが変えられるようにする
http://dobon.net/vb/dotnet/control/tsallowitemreorder.html
管理人様

お世話になっております。

なるほど、確かにAllowItemReorderとAllowDropの両方をTrueにはできませんね。
ご紹介して下さったページも参考に色々と試してみます。

また壁にぶち当たった時は質問させていただきます。
宜しくお願いします。

有難うございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板