簡體   English   中英

退出屏幕監視器的事件(使用WPF)

[英]Event for exiting the screen monitor (with WPF)

我正在編寫一個使用WPF窗口的程序。 我使用下一個代碼來最大化窗口:

   this.WindowStyle = WindowStyle.None;            
   this.WindowState = WindowState.Maximized;      
   this.Topmost = true; 

當窗口最大化時,我想知道鼠標是否退出顯示器的邊框,這樣我就可以打開一個新的窗口,提供一些新的控件(就像在BsPlayer中一樣:當鼠標退出屏幕時,會打開一個窗口,讓您可以訪問按鈕,如播放,暫停,停止等)。 我試圖使用this.MouseLeave,但是當窗口最大化時似乎沒有觸發任何事件。 經過一些測試后,我發現問題可能是當我的窗口最大化時,它實際上大於顯示器的分辨率。 在一個基本示例中:如果您的顯示器的分辨率為1280 x 1024,則窗口的尺寸(根據this.Width和this.Height)為1294 x 1038.那么我該怎么辦? 我應該如何處理這個問題?

您可以處理Window的MouseMove事件並檢查鼠標的位置。

private void Window_MouseMove(object sender, MouseEventArgs e)
{
   //PrimaryScreenWidth - 1 to account for the cursor itself
   if (e.GetPosition(this).X >= SystemParameters.PrimaryScreenWidth - 1 || e.GetPosition(this).X <= 1)
       MessageBox.Show("Edge hit");
}

如果您正在運行多個監視器,您還可以處理MouseLeave事件以處理鼠標移動到第二個監視器的情況。

private void Window_MouseLeave(object sender, MouseEventArgs e)
{
   MessageBox.Show("Edge hit");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM