Я использую 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));
Я понял правильно ваше требование?