Я занимаюсь разработкой приложения для 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();