的问题与你正在做的是,为提取存储在拖动里面的数据什么是零,您必须指定确切类型。
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))
会告诉你它是否是这种格式。
+1对于EXACT类型,谢谢 – wruckie 2014-04-01 21:58:39