将UserControl拖到另一个表单

时间:2012-04-11 12:12:58

标签: c# winforms

基本上,情况如下: FormA有一个UserControl(包含5个标签和一个picbox),名为“cardShowing”。

private void cardShowing_MouseDown(object sender, MouseEventArgs e)
{
    DoDragDrop(cardShowing, DragDropEffects.Copy);
}

FormB是拖动的目标

private void HandForm_DragDrop(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Copy;
    CardControl card = (CardControl)e.Data.GetData(typeof(CardControl));
    card.BorderStyle = BorderStyle.FixedSingle;
    card.Location = new Point(cardControl3.Location.X + 187, cardControl1.Location.Y);
    //cardControl1 and 3 are other controls already present on FormB
    this.Controls.Add(card);//add the card to the controls colection
}

最后,结果是FormA失去了控制权并且FormB获得了它(尽管效果是“复制”), 但属性转为默认值 - BorderStyle最初是FixedSingle,即使我确保此属性设置为FixedSingle,它也会变为'None'。 “位置”属性也是如此。

现在,我想做的不是从原始形式中删除控件,并将其实际属性转移。

修改 我发现问题就在于:

CardControl card = (CardControl)e.Data.GetData(typeof(CardControl));

那是因为它总是为空。我用我编写的不同类尝试了这个,而不是用户控件,它仍然给出null。 有没有人知道为什么会这样?

0 个答案:

没有答案