防止新窗口离屏

时间:2017-08-11 17:36:37

标签: c# wpf xaml

如果MainWindow距离屏幕边缘太近,打开具有相对定位的New Window可能会偏离屏幕。

我想让它检测到它在屏幕外并重新定位在边缘附近,甚至与MainWindow重叠。对于顶部,底部,左侧和右侧。

示例项目来源
https://www.dropbox.com/s/3r2guvssiakcz6f/WindowReposition.zip?dl=0

private Boolean IsWindowOpened = false;


// Info Button
//
private void buttonInfo_Click(object sender, RoutedEventArgs e)
{
    MainWindow mainwindow = this;

    // Start Info Window
    InfoWindow info = new InfoWindow(mainwindow);

    // Only Allow 1 Window Instance
    if (IsWindowOpened) return;
    info.ContentRendered += delegate { IsWindowOpened = true; };
    info.Closed += delegate { IsWindowOpened = false; };

    // Position Relative to MainWindow
    info.Left = mainwindow.Left - 270;
    info.Top = mainwindow.Top + 0;

    // Open Info Window
    info.Show();
}

1280x720屏幕示例

MainWindow中心屏幕
InfoWindow -270px Left,0px Top

Example 01

关闭屏幕

MainWindow屏幕左上角
InfoWindow -270px Left,0px Top

Example 02

在屏幕中重新定位

MainWindow屏幕左上角
InfoWindow -160px左,0px顶

Example 03

1 个答案:

答案 0 :(得分:0)

这类问题没有捷径可走。你必须弄清楚你正在使用的屏幕的尺寸,然后手动调整信息窗口的位置。

看看这篇StackOverflow帖子:How to get the size of the current screen in WPF?