如何为自定义用户控件添加从两个流式布局面板中拖放的功能?
以下代码行中,用户控件始终为空。
private void flowLayoutPanel1_DragDrop(object sender, DragEventArgs e)
{
UserControl userControl = e.Data.GetData(typeof(UserControl)) as UserControl;
如何为自定义用户控件添加从两个流式布局面板中拖放的功能?
以下代码行中,用户控件始终为空。
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))
会告诉你它是否是这种格式。