拖动用户控制从一个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