/// <summary> /// マウス カーソルの位置とウィンドウ位置およびサイズとを比較し、マウス カーソルがウィンドウ上にあるかを判断する。 /// </summary> /// <param name="cursorPos">マウス カーソル位置</param> /// <param name="winPosSize">ウィンドウ位置およびサイズ</param> /// <returns>ウィンドウ上なら true。それ以外の場合は false。</returns> private static bool OnWindow(System.Drawing.Point cursorPos, WindowPosAndSize winPosSize) { return(!( cursorPos.X < winPosSize.Left || cursorPos.Y < winPosSize.Top || cursorPos.X > winPosSize.Left + winPosSize.Width || cursorPos.Y > winPosSize.Top + winPosSize.Height)); }
/// <summary> /// MainWindows で MouseEnter イベントが発生した際のイベント ハンドラー /// マウス ホバー時にウィンドウを消す。 /// </summary> /// <param name="sender">イベントの発生元</param> /// <param name="e">マウス イベント引数</param> private async void MainWindow_MouseEnter(object sender, MouseEventArgs e) { this.Visibility = Visibility.Hidden; var winPosSize = new WindowPosAndSize() { Left = this.Left, Top = this.Top, Width = this.Width, Height = this.Height }; var task = new Task <Visibility>((x) => { WaitMouseLeave(x); return(Visibility.Visible); }, winPosSize); task.Start(); this.Visibility = await task; return; }