Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C WPF窗口在应用程序启动时从隐藏状态显示时未位于中心_C#_Wpf_Xaml_Window - Fatal编程技术网

C# C WPF窗口在应用程序启动时从隐藏状态显示时未位于中心

C# C WPF窗口在应用程序启动时从隐藏状态显示时未位于中心,c#,wpf,xaml,window,C#,Wpf,Xaml,Window,我构建了一个C WPF应用程序,其中: 它有一个系统托盘图标。 它可以接受一个命令行参数-最小化到任务栏以使窗口在应用程序启动时从任务栏隐藏,要打开它,我们必须双击系统任务栏图标或右键单击图标并选择打开。 在应用程序启动时,窗口位置应位于屏幕中央。 我的窗口只有一个,即MainWindow,我在它的XAML上设置了它 WindowsStartUpLocation=中心屏幕 使窗口位于屏幕的中心 一切都很好。在没有参数的正常情况下,应用程序居中 …但是,不是针对这个:当我运行带有参数-minimi

我构建了一个C WPF应用程序,其中:

它有一个系统托盘图标。 它可以接受一个命令行参数-最小化到任务栏以使窗口在应用程序启动时从任务栏隐藏,要打开它,我们必须双击系统任务栏图标或右键单击图标并选择打开。 在应用程序启动时,窗口位置应位于屏幕中央。 我的窗口只有一个,即MainWindow,我在它的XAML上设置了它

WindowsStartUpLocation=中心屏幕 使窗口位于屏幕的中心

一切都很好。在没有参数的正常情况下,应用程序居中

…但是,不是针对这个:当我运行带有参数-minimize to tray的应用程序并双击sys tray图标以显示窗口时,它没有居中

以下是接受参数及其关联操作的代码:

... /// ///主窗口构造函数 /// 公共主窗口 { 初始化组件; 初始化参数; ... } /// ///初始化与应用程序参数关联的操作。 /// 公共无效初始化参数 { 字符串[]args=Environment.GetCommandLineArgs; //将应用程序启动时的窗口最小化到任务栏 //如果用户放置第一个参数-最小化到应用程序上的任务栏 // 如果参数长度>=2 { 如果args[1]==-最小化到托盘 { this.WindowState=WindowState.Minimized; 这个。隐藏; this.StateChanged+=main窗口_StateChanged; } } } ... /// ///每当用户最小化应用程序窗口时,从任务栏隐藏应用程序窗口。 /// /// /// public void主窗口\u StateChangedobject发送方,事件参数e { //当应用程序窗口最小化时,将其从任务栏中隐藏 // 如果this.WindowState==WindowState.Minimized { 这个。隐藏; } } 和系统托盘图标上的事件处理程序双击或单击图标的打开上下文菜单:

/// ///当用户单击应用程序系统托盘图标上的“打开”上下文菜单时,打开/显示应用程序。 /// /// /// 公共无效菜单打开\单击\系统图标\双击对象发送者,事件参数e { 这个,秀,; 这就是重点; this.WindowState=WindowState.Normal; } 那么,为什么在应用程序启动时从隐藏位置显示窗口时窗口不居中?我做错什么了吗

任何帮助都将不胜感激。

根据此:

在设置窗口位置之前,必须将WindowsState设置为“正常”

显然,它还可以防止窗口显示不居中。我的错误是,在隐藏窗口之前,我将WindowState设置为Minimized,这会使窗口不居中

为了解决这个问题,我修改了this.WindowState=WindowState.Minimized;指向此.WindowState=WindowState.Normal

公共无效初始化参数 { 字符串[]args=Environment.GetCommandLineArgs; //将应用程序启动时的窗口最小化到任务栏 //如果用户放置第一个参数-最小化到应用程序上的任务栏 // 如果参数长度>=2 { 如果args[1]==-最小化到托盘 { this.WindowState=WindowState.Normal;//修复了该问题 这个。隐藏; this.StateChanged+=main窗口_StateChanged; } } }