私は、パネルにいくつかのコントロールを表示する必要がある C# の 1 つのアプリケーションで作業しています。コントロールはドラッグ可能です。次の 1 つのことを除いて、すべて正常に動作しています。
- Main-Panel にパネル (コントロール コンテナー) があるとします。メイン パネルには AutoScroll プロパティ true があります。そのため、内部パネル (コントロール コンテナー) の高さがメイン パネルの高さよりも大きい場合、メイン パネルはスクロール バーを表示します。
- メインパネルよりも高さが高いため、内側のパネルが2つの領域に表示されているとします。内側のパネルにピクチャボックスを追加すると、開始時に位置10,10を設定したため、ピクチャボックスが上部領域に表示されます。
このピクチャーボックスを下にドラッグしようとすると、マウスの動きに合わせて動きます。しかし、それは望ましい位置ではありませんでした。私のコードは、オブジェクトを移動するのに簡単です。
public static void Init(Control control, Control container, Direction direction) { bool Dragging = false; Point DragStart = Point.Empty; control.MouseDown += delegate(object sender, MouseEventArgs e) { Dragging = true; DragStart = e.Location; control.Capture = true; HoldOn.Invoke(sender, e); }; control.MouseUp += delegate(object sender, MouseEventArgs e) { Dragging = false; control.Capture = false; }; control.MouseMove += delegate(object sender, MouseEventArgs e) { if (Dragging) { control.Location = new Point(e.X - DragStart.X + control.Location.X, e.Y - DragStart.Y + control.Location.Y); } }; }
私の問題を示すために写真を追加しました。ご理解いただけると幸いです。