gpt4 book ai didi

c# - 将用户控件从一个流程布局面板拖动到另一个流程布局面板

转载 作者:行者123 更新时间:2023-11-30 16:36:28 26 4
gpt4 key购买 nike

我如何从 2 个流程布局面板中添加自定义用户控件的拖放功能?

Usercontrol 在下面的代码行中保持为 null

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

关于c# - 将用户控件从一个流程布局面板拖动到另一个流程布局面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/766859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com