У меня есть программа, которая имеет FlowLayoutPanel внутри его формы. Я кодирую на FlowLayoutPanelСобытие MouseMove и все работает нормально; за исключением того, что он не запускает событие MouseMove, пока курсор перемещается по его полосе прокрутки.Как передать MouseEventArgs с правильными свойствами в обработчики событий?
Я искал в Интернете и нашел следующий подход, который использует производный класс от FlowLayoutPanel, а затем отменяет его WndProc метод:
class FlowLayoutPanelEx : FlowLayoutPanel
{
const int WM_NCMOUSEMOVE = 0x00A0;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCMOUSEMOVE)
{
base.OnMouseMove(null);
}
base.WndProc(ref m);
}
}
У меня проблема с повышением (или вызова) основа.OnMouseMove(). Для этого необходимо указать объект MouseEventArgs. Мне нужно передать правильный MouseEventArgs, потому что мой обработчик событий полагается на него, но я не знаю, как установить/где получить правильные свойства (кнопки, X, Y и т. Д.), Чтобы передать правильные MouseMoveEvent ,
Любая помощь будет оценена по достоинству.
Есть две проблемы с кодом вы предоставили: Во-первых, X и Y значения являются позиции указателя на весь экран, а не на пользовательском элементе управления. Мне нужна координата указателя только на пользовательском контроле, и я не могу выполнять операции над X и Y, переданные в обработчике событий. Во-вторых, мне нужно свойство MouseButtons. BTW, что делает OnNcMouseMove делать? –
Обновления с переводом экрана на окна. OnNcMouseMove будет обычным получателем этого сообщения. – Alex
@ RamtinSoltani это обновление работает для вас? – Alex