0

私は、パネルにいくつかのコントロールを表示する必要がある 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);
    
    
            }
        };
    }
    

私の問題を示すために写真を追加しました。ご理解いただけると幸いです。 ここに画像の説明を入力

4

0 に答える 0