基本上,情况是这样的: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,它变成“无”。“位置”属性也是如此。
现在,我想做的不是将控件从其原始形式中删除,而是转移其实际属性。
编辑 我发现问题出在这条线上:
CardControl card = (CardControl)e.Data.GetData(typeof(CardControl));
那是因为它始终为空。我已经尝试过使用我编写的不同类而不是用户控件,但它仍然给出 null。有谁知道为什么会这样?