我正在开发一个Windows C#,VS 2008应用程序。我有一个MDI容器表单,在单击按钮时在其中添加一个新表单。当创建子表单时,我在运行时向其添加面板控件和图片框控件。
我为图片框添加鼠标事件处理程序,包括鼠标按下、鼠标抬起和鼠标移动事件。鼠标按下和抬起按预期工作,但鼠标移动事件会在鼠标停留在图片框上且不移动时持续触发。我知道事件被触发了,因为在鼠标移动事件中,我保留了一个计数器变量,并在每次调用mousemove事件时将其值递增并更新到标签中。
为什么会这样?下面是我使用的代码。
谢谢!
我为图片框添加鼠标事件处理程序,包括鼠标按下、鼠标抬起和鼠标移动事件。鼠标按下和抬起按预期工作,但鼠标移动事件会在鼠标停留在图片框上且不移动时持续触发。我知道事件被触发了,因为在鼠标移动事件中,我保留了一个计数器变量,并在每次调用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();
count++; lblCounter.Text = count.ToString();
- over.drive