要么我不完全了解事件如何工作或德尔菲棱镜已疯了!为什么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消息。这不应该是一个问题,不能看到其余的代码来说明它为什么可能。 –