我有一个 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/