我正在使用C#和Winforms 3.5
我有一个用户控件的列表,所有这些控件都源自一个基类。可以将这些控件添加到各种面板中,而我正在尝试实现拖放功能,我遇到的问题是DragDrop事件。
对于DragEventArgs,e.Data.GetData(typeof(baseClass))
不起作用。它想要:
e.Data.GetData(typeof(derivedClass1))
e.Data.GetData(typeof(derivedClass2))
etc...
有什么办法可以解决这个问题,还是有更好的架构方法?
最佳答案
您可以将数据包装在一个通用类中。例如,假设您的基类名为DragDropBaseControl
public class DragDropInfo
{
public DragDropBaseControl Control { get; private set; }
public DragDropInfo(DragDropBaseControl control)
{
this.Control = control;
}
}
然后可以在基类中使用以下命令启动拖放操作
DoDragDrop(new DragDropInfo(this), DragDropEffects.All);
您可以使用以下命令访问拖动事件中的数据
e.Data.GetData(typeof(DragDropInfo));
我是否正确理解您的要求?
关于C#拖放-使用基类的e.Data.GetData,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2731425/