0
我有一個程序,其中有一個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);
}
}
我有養育(或調用)問題base.OnMouseMove()。它需要一個MouseEventArgs對象作爲參數傳入。我需要通過正確的MouseEventArgs,因爲我的事件處理程序依賴於它,但我不知道如何設置/在哪裏獲得正確的屬性(按鈕,X,Y等)以通過正確的MouseMoveEvent 。
任何幫助將不勝感激。
有兩個問題與您提供的代碼: 首先,X和Y值和整個屏幕上的指針的位置不是在用戶控件。我只需要用戶控件上的指針座標,而且我不能對傳入事件處理函數的X和Y進行操作。 其次,我需要MouseButtons屬性。 順便說一句,OnNcMouseMove做什麼? –
將屏幕轉換爲窗口座標進行更新。 OnNcMouseMove將是此消息的正常收件人。 – Alex
@RamtinSoltani爲你做了這個更新工作? – Alex