2

プログラムで作成されたパネルと、Microsoft Visual Studio IDE のようにドラッグ ドロップしてサイズ変更できるコントロールを含むフォームを作成しようとしています。

で、こんなものを作りました。非常に多くの線 (青い線) と非常に多くのボックス (黄色の線) があるはずで、青い線の中に黄色いボックスを移動できます。すべてが設計時に定義された制御で機能します。

ここに画像の説明を入力

ソースコードはこちら

    public partial class Form1 : Form
{
    bool allowResize = false;
    public Form1()
    {
        InitializeComponent();           

        panel1.AllowDrop = true;
        panel2.AllowDrop = true;
        panel3.AllowDrop = true; 
        panel4.AllowDrop = true;

        panel1.DragEnter += panel_DragEnter;
        panel2.DragEnter += panel_DragEnter;
        panel3.DragEnter += panel_DragEnter;
        panel4.DragEnter += panel_DragEnter;


        panel1.DragDrop += panel_DragDrop;
        panel2.DragDrop += panel_DragDrop;
        panel3.DragDrop += panel_DragDrop;
        panel4.DragDrop += panel_DragDrop;

        panelMove.MouseDown += panelMove_MouseDown;        

    }

    void panelMove_MouseDown(object sender, MouseEventArgs e)
    {
        panelMove.DoDragDrop(panelMove, DragDropEffects.Move);
    }

    void panel_DragEnter(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.Move;
    }

    void panel_DragDrop(object sender, DragEventArgs e)
    {
        ((Panel)e.Data.GetData(typeof(Panel))).Parent = (Panel)sender;
    }

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        allowResize = true;
    }

    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    {
        allowResize = false;
    }

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        if (allowResize)
        {
            this.panelMove.Height = pictureBox1.Top + e.Y;
            this.panelMove.Width = pictureBox1.Left + e.X;
        }
    }       
}

しかし、実行時にこれらのコントロール(青と黄色のボックス)を作成する方法がわかりません。

4

1 に答える 1

0

Anchorのプロパティを確認する必要がありますControl。Anchor を使用すると、実行時にコントロールのサイズを自動的に変更できます。

Anchor プロパティを使用して、親コントロールのサイズが変更されたときにコントロールが自動的にサイズ変更される方法を定義します。コントロールをその親コン​​トロールに固定すると、親コントロールのサイズが変更されたときに、固定された端が親コントロールの端に対して同じ位置に留まることが保証されます。

コントロールをそのコンテナーの 1 つ以上の端に固定できます。たとえば、Anchor プロパティの値が Top および Bottom に設定されている Button を含む Form がある場合、Form の Height が増加するにつれて、Form の上端および下端までの固定された距離を維持するために Button が引き伸ばされます。

MSDN :Control.Anchor

于 2013-04-23T01:46:45.093 に答える