1

私は学校のプロジェクト用にテーブル予約システムを作成しており、テーブルを表すために PictureBoxes のリストを使用しています。これらの PictureBoxes にホバー イベントをリンクしました。ホバーすると、BackColor プロパティが変更されます。

List<PictureBox> pb = new List<PictureBox> { pictureBox1, pictureBox2, pictureBox3};

foreach (PictureBox p in pb)
{
    p.BorderStyle = BorderStyle.Fixed3D;
    p.BackColor = Color.White;
    p.MouseHover += new EventHandler(mouseOn);
}

private void mouseOn(object sender, EventArgs e)
{
    ((PictureBox)sender).BackColor = Color.Green;
}

マウスを上に移動すると、イベントがトリガーされるまでに 1 秒かかることを除いて、すべてがうまく機能します。イベントをすぐにトリガーする方法はありますか?

4

2 に答える 2

4

イベントをすぐにトリガーする場合は、MouseEnter代わりにイベントを使用してください。MouseHover設計上、イベントが発生するまで、マウスはしばらく静止している必要があります。

ところで SystemInformation.MouseHoverTime、イベントのためにその遅延を保持しますMouseHover

于 2012-11-25T18:40:51.510 に答える
1

マウスオーバーしたときにイベントがトリガーされるまでに1秒かかることを除いて、すべてがうまく機能します

それControl.MouseHoverが定義されている方法です:

マウスポインタがコントロール上にあるときに発生します。

「休憩」の部分は1秒の遅延です。マウスがホバーとしてカウントされる前に、マウスがコントロールの残りの部分に留まらなければならない時間の長さを調整する方法を私は知りません。

遅延が必要ない場合、つまり、マウスがコントロールの領域に入るとすぐに発生するイベントが必要な場合は、Control.MouseEnter代わりに使用する必要があります。

両方のイベントのドキュメントから:

マウスイベントは次の順序で発生します。

  • MouseEnter

  • MouseMove

  • MouseHover / MouseDown / MouseWheel

  • MouseUp

  • MouseLeave

于 2012-11-25T18:41:43.053 に答える