При перетаскивании хочу скопировать панели, не перемещая их

Я хочу перетащить панели из одной таблицы LayoutPanel в другую. Я также хочу, чтобы панели копировались, а не перемещались; то есть я хочу, чтобы они были скопированы (из 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)
    {

    }
}

}

1 ответ

Вам необходимо создать новую панель в обработчике MouseDown, установить ее свойства, аналогичные свойствам оригинала, добавить ее в форму и использовать DoDragDrop с этой новой панелью.

Другие вопросы по тегам