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 がそれを取得します (効果は「コピー」ですが)。ただし、プロパティはデフォルトに変更されます。 「なし」に変わります。同じことが「場所」プロパティにも当てはまります。

ここで、私がやりたいことは、コントロールを元の形から切り離さず、実際のプロパティを転送することです。

編集 問題が次の行にあることがわかりました:

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

これは、常に null であるためです。ユーザーコントロールではなく、作成したさまざまなクラスでこれを試しましたが、それでもnullが返されます。なぜこれが起こるのか誰にも手がかりがありますか?

4

0 に答える 0