我正在开发一个 Windows C#、VS 2008 应用程序。我有一个 MDI 容器表单,我在运行时单击按钮向其中添加了一个新表单。创建子窗体时,我会在运行时向它添加一个面板控件和一个图片框控件到面板。
我为图片框添加了鼠标向上、鼠标向下和鼠标移动的鼠标事件处理程序。鼠标上下按预期工作,但是当鼠标悬停在图片框上且不移动时,鼠标移动事件会持续触发。我知道该事件正在被触发,因为在鼠标移动事件中,我保留了一个计数器变量,并在每次调用 mousemove 事件时将值递增并更新为标签。
为什么会这样?我正在使用的代码如下。
谢谢
Form frm = new Form();
frm.Deactivate += new EventHandler(MDIChildDeactivate);
PictureBox pi = new PictureBox();
pi.Dock = DockStyle.Fill;
pi.MouseUp += new MouseEventHandler(ImageMouseUp);
pi.MouseDown += new MouseEventHandler(ImageMouseDown);
pi.MouseMove += new MouseEventHandler(ImageMouseMove);
pi.Paint += new PaintEventHandler(CanvasPaint);
pi.KeyDown += new KeyEventHandler(ImageKeyDown);
pi.KeyPress += new KeyPressEventHandler(ImageKeyPress);
/////////////////////////////////////////////////////////
pi.PreviewKeyDown += new PreviewKeyDownEventHandler(pi_PreviewKeyDown);
/////////////////////////////////////////////////////////
if (!IsTabbedMdi)
frm.ClientSize = size;
frm.AutoScroll = true;
pi.Name = ProjectFileName;
Panel pnl = new Panel();
pnl.Dock = DockStyle.None;
pnl.Size = WarpArt.Properties.Resources.GreyCheckerBoard.Size;
pi.Image = WarpArt.Properties.Resources.GreyCheckerBoard;
pnl.AutoScroll = true;
pnl.HorizontalScroll.Visible = true;
pnl.VerticalScroll.Visible = true;
pnl.AutoSizeMode = AutoSizeMode.GrowAndShrink;
pnl.Name = ProjectFileName;
pnl.Controls.Add(pi);
frm.Controls.Add(pnl);
frm.MdiParent = this;
frm.Show();