如何可以添加自定义用户控件的拖放能力从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