C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: グループボックス中のコントロールのぐらっぐ&ドロップについて


(過去ログ 64 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■36900 / inTopicNo.1)  グループボックス中のコントロールのぐらっぐ&ドロップについて
  
□投稿者/ プリ太 (19回)-(2009/06/09(Tue) 18:29:26)

分類:[C#] 

こんにちは、プリ太です。

開発環境WinXP VS2005です。

フォーム上にコンボボックスを8個、グループボックスを1つ配置し、グループボックスの中にボタンコントロールを8個配置しました。
グループボックスの中のボタンをコンボボックスにDrag&Dropすると、ボタンのTextがコンボボックスに表示され、ボタンは元の位置に戻りEnabledをfalseにしようとしています。
Drag中の動作は、ボタンコントロールのMouseDown、MouseMove、MouseUpイベントで作成しました。
DropはコンボボックスのDragEnterイベントでとろうとしています。

実行して実際にDragしたところ、グループボックスの外にボタンコントロールを移動させると見えなくなり、Dropできませんでした。
ボタンコントロールがグループボックスのコンテナに入っているかららしいというところまでは調べたのですが、一時的に外す方法が解りません。
外すことはできるのでしょうか?
それとも、外さすにDrag時だけ見えるようにする方法があるのでしょうか?

また、グループボックスから取り出したボタンコントロールをコンボボックスにDragしたところ、DragEnterイベントは発生しませんでした。
Dropされるコントロールに制限はあるのでしょうか?

宜しくお願いします。
引用返信 編集キー/
■36919 / inTopicNo.2)  Re[1]: グループボックス中のコントロールのぐらっぐ&ドロップについて
□投稿者/ Azulean (402回)-(2009/06/09(Tue) 23:09:36)
試していません。

1.ドラッグ開始時にGroupBox.Controls.Removeで一旦グループボックスから外して、Form.Controls.Addでフォームに登録し直す。
2.対象のボタンを手前に表示するためBringToFrontを呼んでおく。(呼ばないと最後にAddしたものが一番下に表示される)
引用返信 編集キー/
■36937 / inTopicNo.3)  Re[2]: グループボックス中のコントロールのぐらっぐ&ドロップについて
□投稿者/ プリ太 (20回)-(2009/06/10(Wed) 11:08:03)
Azulean さん、ありがとうございます。

> 1.ドラッグ開始時にGroupBox.Controls.Removeで一旦グループボックスから外して、Form.Controls.Addでフォームに登録し直す。
> 2.対象のボタンを手前に表示するためBringToFrontを呼んでおく。(呼ばないと最後にAddしたものが一番下に表示される)

試してみました。
外すことはできたのですが、MouseUp時に元の位置とずれたところに戻るようになりました。
この辺はいろいろ試してみます。

ただ、Drop先のDragEnterイベントは発生しないままです・・・
引用返信 編集キー/
■36938 / inTopicNo.4)  Re[3]: グループボックス中のコントロールのぐらっぐ&ドロップについて
□投稿者/ Hongliang (416回)-(2009/06/10(Wed) 11:33:30)
DragEnter などのイベントを発生させるには、
・ドロップを受け取りたいコントロールの AllowDrop プロパティの設定
・ドラッグ開始時に DoDragDrop メソッドを呼び出す
が必要です。
DoDragDrop はドロップ完了まで処理を返しませんし、ドラッグ中は MouseMove/MouseUp なども発生しません。代わりに QueryContinueDrag イベントを処理します。
引用返信 編集キー/
■36955 / inTopicNo.5)  Re[4]: グループボックス中のコントロールのぐらっぐ&ドロップについて
□投稿者/ プリ太 (21回)-(2009/06/10(Wed) 14:26:10)
Hongliang さん、ありがとうございます。

> DragEnter などのイベントを発生させるには、
> ・ドロップを受け取りたいコントロールの AllowDrop プロパティの設定

これは設定していましたが、

> ・ドラッグ開始時に DoDragDrop メソッドを呼び出す
> が必要です。

これをしていませんでした。
そこで、呼び出しを行うようにしたところ、DragEnter→DragOver→DragDropの順番にイベントが発生しました。

> DoDragDrop はドロップ完了まで処理を返しませんし、ドラッグ中は MouseMove/MouseUp なども発生しません。代わりに QueryContinueDrag イベントを処理します。

QueryContinueDragイベントの使い方がよく理解できていないのですが、
Dragされているコントロールがマウスに合わせて動くように見える処理をMouseMoveにいれていたのですが、その代りができるということでしょうか?
引用返信 編集キー/
■37002 / inTopicNo.6)  Re[5]: グループボックス中のコントロールのぐらっぐ&ドロップについて
□投稿者/ プリ太 (22回)-(2009/06/11(Thu) 10:07:39)
プリ太です。

MouseMoveイベント時に入れていたコントロールの移動についてですが、
コントロールを移動させることでDrag&Dropをわかりやすくするのではなく、
GiveFeedbackイベントでアイコンを変更することでDrag&Drop中を視認出来るようにしました。

アドバイスを頂いた方々、ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -