微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算机上的位置坐标显示X = -32000,Y = -32000

我有一个C#应用程序,当它closures时保存它的状态,然后在启动时读入保存的状态。 一个保存的项目是主窗体的位置。 通常这个工程很好 – 在我的代码中有这样一行,将位置保存到一个文件,然后在启动时读回:

streamWriter.WriteLine("location:" + this.Location.X + "," + this.Location.Y);

通常,在具有多个显示器的机器上,位置坐标如下所示:

location:-1069,283

偶尔我会看到像这样保存的坐标:

location:-32000,-32000

然后,当用户将应用程序重新启动时,表单就会离开桌面,不能被普通用户轻松地取回。

在WPF中使用通用Windows平台(Windows 10)控件

我如何检索显示器信息?

在while循环期间另一个进程正在使用文件(C#)

如何以编程方式更改文件夹审核选项下的“适用于”字段(.NET)

Windows客户端应用程序的login对话框

发生什么事情使这个坐标被这样读取,并且有build议来防止这种情况?

Form.ShowInTaskBar / Process.MainWindowHandle

用VC ++编程在Windows之外运行

Windows似乎失去了.NET应用程序的踪迹

GUI故障:checkBox文本在Windows 8中显示不完整

文件被复制到SysWOW64而不是System32

你看到的坐标是由于应用程序在关闭时被最小化。 Windows“隐藏”了你的表格,实际上是将它从坐标移动到一些可笑的X,Y坐标。

以编程方式验证:

从Vista上的表单应用输出

当前坐标X:184 Y:184 *认位置当前坐标X: – 32000 Y: – 32000 *最小化位置

代码

System.Diagnostics.Debug.WriteLine(“当前坐标X:”+ Location.X +“Y:”+ Location.Y);

为了解决这个问题,我简单地检查一下你的应用程序正在关闭时的值,而不是实际上将它保存到文件中。

如果你不想在任意坐标值上搞数学,你也可以检查WindowState。 在MSDN上看到这里

在窗体上使用RestoreBounds属性

编辑:这是从我的一些代码复制/粘贴(可能会使用一些清理,但它得到了点)。 这是从我的主窗体的FormClosing事件处理程序:

// Save the last form state Program.AppSettings.MainWindowFormState = this.WindowState; // Check if the window is minimized or maximized if ((this.WindowState == FormWindowState.Minimized) || (this.WindowState == FormWindowState.Maximized)) { // Use the restored state values Program.AppSettings.MainWindowX = this.RestoreBounds.Left; Program.AppSettings.MainWindowY = this.RestoreBounds.Top; Program.AppSettings.MainWindowWidth = this.RestoreBounds.Width; Program.AppSettings.MainWindowHeight = this.RestoreBounds.Height; } else { // Use the normal state values Program.AppSettings.MainWindowX = this.Left; Program.AppSettings.MainWindowY = this.Top; Program.AppSettings.MainWindowWidth = this.Width; Program.AppSettings.MainWindowHeight = this.Height; }

这里是如何恢复负载状态(记得设置你的窗体的初始位置模式为手动,以避免闪烁):

// Set the initial form state this.WindowState = Program.AppSettings.MainWindowFormState; this.Left = Program.AppSettings.MainWindowX; this.Top = Program.AppSettings.MainWindowY; this.Width = Program.AppSettings.MainWindowWidth; this.Height = Program.AppSettings.MainWindowHeight;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐