1

基本上,情况是这样的: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。有谁知道为什么会这样?

4

0 回答 0