Перетаскивание C# - e. Данные. GetData с помощью базового класса

Я использую C# и Winforms 3.5

У меня есть список пользовательских элементов управления все полученные из одного базового класса. Эти средства управления могут быть добавлены к различным панелям, и я пытаюсь реализовать функциональность перетаскивать-отбрасывания, проблема, в которой я работаю к, находится на событии DragDrop.

Для DragEventArgs e.Data.GetData(typeof(baseClass)) не работает. Это хочет:

e.Data.GetData(typeof(derivedClass1))
e.Data.GetData(typeof(derivedClass2))
etc...

Существует ли способ, которым я могу обойти это или лучший способ спроектировать его?

7
задан tanascius 7 September 2012 в 11:19
поделиться

1 ответ

Вы можете заключить данные в общий класс. Например, предположим, что ваш базовый класс называется 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));

Я понял правильно ваше требование?

17
ответ дан 6 December 2019 в 10:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: