CustomControl和子控件 - 拖放

时间:2014-05-12 12:20:22

标签: c# winforms drag-and-drop custom-controls parent-child

我有一个CustomControl,其中包含一个带有标签的按钮。我怎样才能拖放这个自定义控件,无论我从哪里开始拖动以及将其放在另一个自定义控件上(重新排列它们)。要使发送者和接收者成为整个自定义控件,因为如果我从按钮拖动发送者是按钮,我只拖动按钮而不是整个自定义控件..我想拖动一个在另一个上添加它在那个位置。

1 个答案:

答案 0 :(得分:0)

找到解决方案:

private void flowLayoutPanel1_DragDrop(object sender, DragEventArgs e)
{
    Control target = new Control();

    target.Parent = sender as Control;

        if (target != null)
        {
            int targetIndex = FindCSTIndex(target.Parent);
            if (targetIndex != -1)
            {
                string cst_ctrl = typeof(CustomControl).FullName;
                if (e.Data.GetDataPresent(cst_ctrl))

                {
                    Button source = new Button();
                    source.Parent = e.Data.GetData(cst_ctrl) as CustomControl;

                    if (targetIndex != -1)
                        this.flowLayoutPanel1.Controls.SetChildIndex(source.Parent, targetIndex);
                }
            }
        }
    }