When dragging I want to copy the panels, not moving them

67 Views Asked by At

I want to drag panels from one tableLayoutPanel to another. I also want the panels to be copied, not moved; that is, I want them to be copied (from tableLayoutPanel1 to tableLayoutPanel2), leaving the item in tableLayoutPanel1. Can I do this? If you can give me an idea, it will be great. Thank you

    public Form1()
    {
        InitializeComponent();
        panel1.AllowDrop = true;
        panel2.AllowDrop = true;
        panel3.AllowDrop = true;

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

        panel1.DragDrop += panel_DragDrop;
        panel2.DragDrop += panel_DragDrop;
    }

    private void panel3_MouseDown(object sender, MouseEventArgs e)
    {
        DoDragDrop(panel3, DragDropEffects.Copy);
    }
    private void panel3_MouseMove(object sender, MouseEventArgs e)
    {
        DoDragDrop(panel3, DragDropEffects.Copy);
    }
    private void panel_DragEnter(object sender, DragEventArgs e)
    {

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

    private void Form1_Load(object sender, EventArgs e)
    {

    }
}

}

1

There are 1 best solutions below

0
On

You need to create a new panel in the MouseDown handler, set its properties like those of the original, add it to the form and use DoDragDrop with this new panel.