Каждый раз, когда я хочу позволить пользователю перетащить элемент управления, я вызываю DoDragDrop этого элемента управления.
Перетаскивание работает нормально, но у меня возникают проблемы с окружающими вещами:
DoDragDrop полностью блокирует форму, нет событий таймера, не обрабатываются сообщения рисования.
Блокировка DoDragDrop не только для операции перетаскивания, но и до завершения целевой программы ссобытие drop (код отстой IE explorer.exe).В зависимости от кода другой программы это отстой.
Я думал вызвать DoDragDrop из нового потока.
пробовал это:
Thread dragThread = new Thread(() =>
{
Form frm = new Form();
frm.DoDragDrop("data", DragDropEffects.All);
});
dragThread.SetApartmentState(ApartmentState.STA);
dragThread.IsBackground = true;
dragThread.Start();
но этоне похоже на работу.Я имею в виду: при выполнении DoDragDrop из другого потока, подобного этому, другие элементы управления в моей программе или другие программы не получают сообщения перетаскивания.
Какие-либо другие решения?