2

マウス カーソルがカスタム モーダル Winforms ダイアログを離れている(マウス カーソルがダイアログの周囲のスペースに入っている) かどうかを判断することは可能ですか? ダイアログは ShowDialog() を介して表示されます。Mouse_Leave は、フォームの可視部分を離れるときに起動するため、機能しません。したがって、フォーム上のコントロールに入るときにも発生します!

4

2 に答える 2

3

フォームにクライアント領域をドックフィルするパネルがある場合、フォームの MouseLeave イベントは常に発生するとは限らないため、Timer はこれを確認するためのかなり信頼できる方法です。

System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();

public Form1() {
  InitializeComponent();
  timer.Tick += timer_Tick;
  timer.Enabled = true;
}

void timer_Tick(object sender, EventArgs e) {
  if (this.Bounds.Contains(MousePosition)) {
    this.Text = "Inside";
  } else {
    this.Text = "Outside";
  }
}
于 2013-10-15T12:59:54.217 に答える