別のflowlayoutpanelからユーザーコントロールをドラッグ
-
12-09-2019 - |
質問
どのように私は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))
はあなたを教えてくれます。
所属していません StackOverflow