2009-04-20 45 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

相關問題