繁体   English   中英

在运行时创建,拖放控件并调整其大小

[英]Create, Drag drop and resize controls on runtime

我正在尝试创建一个表单,其中包含以编程方式创建的面板和能够像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;
        }
    }       
}

但我不知道如何在运行时创建选择控件(蓝色和黄色框)。

您应该检查ControlAnchor属性。 锚点允许控件在运行时自动调整大小。

使用Anchor属性定义控件在调整其父控件大小时如何自动调整大小。 将控件锚定到其父控件可确保在调整父控件的大小时,锚定边缘相对于父控件的边缘保持在相同位置。

您可以将控件锚定到其容器的一个或多个边缘。 例如,如果您有一个带有按钮的“表单”,其“锚点”属性值设置为“顶部”和“底部”,则随着“表单高度”的增加,将拉伸按钮以保持到表单顶部和底部边缘的固定距离。

MSDN: Control.Anchor

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM