当鼠标离开只有点击了MouseDown事件为什么MouseMove事件射击? [英] Why is MouseMove event firing when left mouse is clicked only for MouseDown event?

查看:127
本文介绍了当鼠标离开只有点击了MouseDown事件为什么MouseMove事件射击?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

要么我不完全理解事件如何工作或德尔福棱镜已经疯了!

Either I am not totally understanding how events work or Delphi Prism has gone mad!!!

我有一个WinForm,鼠标按下事件和鼠标移动事件。每当我点击鼠标左键预期而已,MouseDown事件火灾也MouseMove事件触发时,它不是假设之后。

I have a winform, mousedown event and mousemove event. Whenever I click the left mouse button only, MouseDown event fires as expected but ALSO MouseMove event fires right after when it is not suppose to.

下面是一张code从我所在的方法分配给事件WinForm设计。

Here is the piece of code from my winform designer where the methods are assigned to events.

  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);

我是什么做错了吗?请帮助我越来越沮丧了这一点,因为我在程序的其他部分鼠标移动事件。它们工作得很好。我似乎无法找出为什么这个perticular鼠标移动事件采取行动了起来。

What am I doing wrong? Please, help I am getting frustrated over this, because I have mousemove events in other parts of my program. They work fine. I can't seem to figure out why this perticular mousemove event is acting up.

推荐答案

我忘了,发生的原因。

但是,对于一个可能的解决方法:

But for a possible work around:

Point _LastPoint = Point.Empty;

private void Form1_MouseMove(object sender, MouseEventArgs e) {
  if (_LastPoint != e.Location) {
    _LastPoint = e.Location;
    // run MouseMove code:
  }
}

这篇关于当鼠标离开只有点击了MouseDown事件为什么MouseMove事件射击?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆