質問

どのように私は2 flowlayoutpanelsからカスタムユーザーコントロールのドラッグアンドドロップ機能を追加することができますか?

ユーザーコントロールは、

以下のコードの次の行にヌルである続けます
    private void flowLayoutPanel1_DragDrop(object sender, DragEventArgs e)
    {
        UserControl userControl = e.Data.GetData(typeof(UserControl)) as UserControl;
役に立ちましたか?

解決

あなたはそれがドラッグ内部に格納されたデータを抽出するためにされて何をしているかとの問題、あなたはを正確のタイプを指定する必要があります。

control.DoDragDrop(new Label(), DragDropEffects.Move);

e.Data.GetDataPresent(typeof(Control)) // = false
e.Data.GetDataPresent(typeof(Label)) // = true

何をする必要がありことラッパーを作成して、ドラッグ&ドロップのコードのためにそれを使用している。

class ControlWrapper
{
  public Control Control { get; private set; }
  public ControlWrapper(Control control) { Control = control; }
}

control.DoDragDrop(new ControlWrapper(new Label()), DragDropEffects.Move);

e.Data.GetDataPresent(typeof(ControlWrapper)) // = true

そして、あなたのコードは、今となっ

ControlWrapper controlWrapper = e.Data.GetData(typeof(ControlWrapper)) as ControlWrapper;
UserControl userControl = controlWrapper.Control as UserControl;

、あまりにも説教じみた音にしようとしていないが、データはあなたが最初にしたい形で存在するかどうかをチェックする必要があります。それはそのフォーマットであればe.Data.GetDataPresent(typeof(ControlWrapper))はあなたを教えてくれます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top