Как вы уже поняли из названия этого поста, я собираюсь взломать.
Хорошо, вот оно: у меня есть окно WPF, в котором размещается форма WinForms, которая, в свою очередь, содержитэлемент управления ActiveX.Это все из-за устаревших компонентов и желания анимировать непрозрачность прозрачного окна WPF.Разве ты уже не чувствуешь веселья ?!
... Итак, я хотел бы иметь возможность перетаскивать мое прозрачное окно WPF, вызывая DragMove мышью вниз для различных областей окна.Это прекрасно работает, и я могу жить с текущим поведением, но было бы неплохо, если бы я мог также перетаскивать окно через событие MouseDown, сгенерированное моим компонентом WinForms.Итак, я выбрал очевидный подход:
void Init()
{
MyWinForm form = new MyWinForm();
form.SomeControl.MouseDown = form_MouseDown;
}
void form_MouseDown( object sender, MouseEventArgs e )
{
if( e.Button == MouseButtons.Left )
{
DragMove();
}
}
Однако мое приложение аварийно завершает работу со следующим сообщением:
Может вызывать DragMove только тогда, когда основная кнопка мыши нажата.
Да, справа, кроме левой (основной) кнопки - это нажатая кнопка (я понимаю, что это может быть проблематично для левшей, но давайте пока этого не будем).Итак, еще раз, простой код, который работает для события Mouse, сгенерированного элементом управления WPF, завершается ошибкой для System.Windows.Forms.Control
.У кого-нибудь есть опыт с этим?Заранее благодарим за любой совет, который вы можете предложить.
TLDR;Вызов DragMove()
изнутри события System.Windows.Controls.MouseDown
приводит к сбою приложения.Я открыт для любого обходного пути на этом этапе.