0

我想将面板从一个 tableLayoutPanel 拖到另一个。我还希望面板被复制,而不是移动;也就是说,我希望将它们复制(从 tableLayoutPanel1 到 tableLayoutPanel2),将项目留在 tableLayoutPanel1 中。我可以这样做吗?如果你能给我一个想法,那就太好了。谢谢

    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)
    {

    }
}

}

4

1 回答 1

0

您需要在 MouseDown 处理程序中创建一个新面板,将其属性设置为与原始面板相同,将其添加到表单中并在此新面板中使用 DoDragDrop。

于 2013-11-12T09:10:59.643 回答