Windows C#、VS 2008 アプリケーションを開発しています。ボタンのクリック時に実行時に新しいフォームを追加する MDI コンテナー フォームがあります。子フォームが作成されたら、実行時にパネル コントロールとピクチャ ボックス コントロールをパネルに追加します。
ピクチャ ボックスのマウス アップ、マウス ダウン、およびマウス移動のマウス イベント ハンドラーを追加します。マウスの上下は期待どおりに機能しますが、マウスがピクチャボックス上にあり、移動していない場合、マウスの移動イベントが継続的に発生します。マウス移動イベント内でカウンター変数を保持し、マウス移動イベントが呼び出されるたびに値をインクリメントしてラベルに更新するため、イベントが発生していることがわかります。
なぜこれが起こるのですか?私が使用しているコードは以下です。
ありがとう
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();