2009-04-20 64 views
3

如何从2个flowlayout面板添加自定义usercontrol的拖放功能?将用户控件从一个流布局面板拖到另一个

用户控件不断下面的代码线以下

private void flowLayoutPanel1_DragDrop(object sender, DragEventArgs e) 
    { 
     UserControl userControl = e.Data.GetData(typeof(UserControl)) as UserControl; 

回答

3

的问题与你正在做的是,为提取存储在拖动里面的数据什么是零,您必须指定确切类型。

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))会告诉你它是否是这种格式。

+0

+1对于EXACT类型,谢谢 – wruckie 2014-04-01 21:58:39

相关问题