我正在编写一个使用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.那么我该怎么办?我该如何处理这个问题?
答案 0 :(得分:1)
您可以处理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");
}