Как обрабатывать событие DragLeave формы, отделенной от событий DragEnter ее субконтроля? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть форма, которая должна перехватывать события DragDrop, DragEnter, DragLeave.Форма имеет много подчиненных элементов управления, и когда пользователь перетаскивает непосредственно через форму, а затем через вложенный элемент управления формы, возникает событие DragLeave формы.Я хотел бы обработать событие DragLeave формы (когда пользователь перетаскивает вне формы), отделенное от событий DragLeave, сгенерированных, когда мышь начинает зависать в субконтроле, который также может обрабатывать события перетаскивания.

Iпрочтите официальную документацию здесь и я до сих пор не знаю, что делать.

В конструкторе я создаю две панели, одна внутри другой, сохраняя пространство между границей формы и самой внешней панелью.и между краем самой внешней панели и самой внутренней панелью.Форма и панели имеют AllowDrop = true.

screenshot

Код:

public Form1()
{
    InitializeComponent();

    AllowDrop = true;
}

protected override void OnDragLeave(EventArgs e)
{
    base.OnDragLeave(e);

    Debug.WriteLine("OnDragLeave called");
}

Шаги для воспроизведения:

  1. Начните перетаскивание файла и, при перетаскивании, наведите курсор на форму.
  2. Переместите курсор за пределы формы.
  3. На панели «Вывод» в Visual Studio новая строканапечатано: OnDragLeave called.
  4. Когда курсор находится над формой, переместите его, чтобы навести курсор на крайнюю панель.
  5. На панели «Вывод» в Visual Studio будет напечатана новая строка: OnDragLeave called.

Ожидается:

  • Должен быть показан только результат шага 3 выше, а не шага 5.

Обновление: Я пытаюсь показать наложение поверх всей формы, когда мышь перетаскивает файл поверх формы.Оверлей создан и протестирован, как и другие события перетаскивания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...