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

标签 c# .net windows

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

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

通常情况下,位置坐标在我有多个显示器的机器上看起来像这样:

location:-1069,283

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

location:-32000,-32000

然后,当用户重新启动应用程序时,表单远离桌面,普通用户无法(轻松)检索到。

以这种方式读取坐标的原因是什么?有什么建议可以防止这种情况发生?

最佳答案

您看到的坐标是因为应用程序在关闭时最小化。 Windows 通过将表单从其坐标实际移动到一些大得离谱的负 X、Y 坐标来“隐藏”您的表单。

以编程方式验证:

Vista 上表单应用程序的输出:

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

来自代码:

System.Diagnostics.Debug.WriteLine("Current coordinates X: " + Location.X + "  Y: " + Location.Y );

为了解决这个问题,我会在您的应用关闭时简单地检查这样的值,而不是实际将其保存到文件中。

如果您不想在任意坐标值上进行数学运算,您还可以检查 WindowState。参见 here on MSDN

关于c# - 计算机上的位置坐标显示 X=-32000,Y=-32000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1478765/

相关文章:

python - 最轻量级跨平台http python主机

linux - Fork() 在 Cygwin(在 Windows 上)和 Linux 中是不同的

c# - 在 Canvas 上设置绘制之间的间隔 (C#)

c# - NLog 不从 XML 配置加载规则

.net - WiX:.Net 3.5 先决条件

c# - 仅显示基于配置的指定属性

c# - 发布项目时在 ASP.NET C# 中获取用户 ID

c# - 如何在WPF中的图像上制作透明 Canvas ?

c# - 手动迭代选择的 XML 元素(C#、XDocument)

windows - 关于NTFS过滤驱动的问题