1

パネルがドッキングされたフォームがあります。次に、15 個のパネル (名前: panel_n) と 15 個の画像ボックス (名前: picturebox_n) をプライマリ パネル (名前: ContainerPanel) に動的に作成します。

関連するマウス イベントを使用して作成されたパネル (panel_n) に任意のピクチャ ボックスをドラッグする場合。画像ボックスがドラッグされたパネルの名前を取得したいと思います。マウスカーソルがキャプチャされたようです。

IMessageFilter インターフェイスを作成しようとしましたが、ピクチャボックスの 1 つをパネルの 1 つにドラッグしたときにトリガーされるイベントはまだありません。

座標が常に 0,0 であるため、ClientRectangle.IntersectsWith 関数も機能しません。

必要なのは、ピクチャボックスがドラッグされたパネル名だけです(できればマウスアップイベントで)

4

1 に答える 1

1

ピクチャボックスに次のような OnMouseDown イベントを与えると:

(sender as PictureBox).DoDragDrop(sender, DragDropEffects.Copy);

次に、パネルの AllowDrop プロパティを true に設定すると、OnDragDrop イベントで次のように名前を取得できます。

string myName = (sender as Panel).Name;

編集:また、パネルに次のような OnDragEnter イベントを与える必要があります:

e.Effect = DragDropEffects.Copy;

もちろん、やっていることに適したものに変更CopyするMoveこともできます。Link使用されるマウス ポインター アイコンを変更するだけです。

于 2010-06-14T13:09:10.700 に答える