基本上,情况如下: 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。 有没有人知道为什么会这样?