要麼我不完全瞭解事件如何工作或德爾菲棱鏡已瘋了!爲什麼MouseMove事件觸發僅當鼠標點擊MouseDown事件時?
我有一個winform,mousedown事件和mousemove事件。每當我單擊鼠標左鍵時,MouseDown事件就會如預期的那樣觸發,但當MouseMove事件沒有被假設時也會立即觸發MouseMove事件。
這裏是我的winform設計器的代碼片段,其中方法被分配給事件。
self.ClientSize := new System.Drawing.Size(751, 502);
self.KeyPreview := true;
self.Name := 'Maker';
self.Text := 'Window Maker';
self.Load += new System.EventHandler(@self.Maker_Load);
self.FormClosing += new System.Windows.Forms.FormClosingEventHandler(@self.Maker_FormClosing);
self.Shown += new System.EventHandler(@self.Maker_Shown);
self.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(@self.Maker_MouseDoubleClick);
self.MouseDown += new System.Windows.Forms.MouseEventHandler(@self.Maker_MouseDown);
self.MouseMove += new System.Windows.Forms.MouseEventHandler(@self.Maker_MouseMove);
self.MouseUp += new System.Windows.Forms.MouseEventHandler(@self.Maker_MouseUp);
self.Paint += new System.Windows.Forms.PaintEventHandler(@self.Maker_Paint);
self.ObjectPopup.ResumeLayout(false);
self.ResumeLayout(false);
我在做什麼錯?請幫助我對此感到沮喪,因爲我的程序的其他部分中有mousemove事件。他們工作正常。我似乎無法弄清楚爲什麼這個特別的mousemove事件正在發生。
你是什麼意思MouseMove事件是不應該火?您的MouseDown事件處理程序是否刪除了MouseMove處理程序? – rossisdead
@rossisdead,如果你只是點擊鼠標左鍵而不移動鼠標指針,那麼預計觸發或觸發的唯一事件是MouseDown,而不是鼠標移動。 – ThN
按設計。 MouseDown捕獲鼠標,MouseUp釋放它。 Windows需要確保窗口在捕捉結束後知道鼠標所在的位置,以便生成額外的MouseMove消息。這不應該是一個問題,不能看到其餘的代碼來說明它爲什麼可能。 –