Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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# 安装程序时,窗体位置(设置为OnLoad)不同_C#_.net_Winforms - Fatal编程技术网

C# 安装程序时,窗体位置(设置为OnLoad)不同

C# 安装程序时,窗体位置(设置为OnLoad)不同,c#,.net,winforms,C#,.net,Winforms,我有一个Windows窗体应用程序,在启动时,我使用以下代码将其停靠在屏幕右下方: protected override void OnLoad(EventArgs e) { var s = Screen.FromPoint(this.Location); this.Location = new Point(s.WorkingArea.Right - this.Width, s.WorkingArea.Height -

我有一个Windows窗体应用程序,在启动时,我使用以下代码将其停靠在屏幕右下方:

protected override void OnLoad(EventArgs e)
{
    var s = Screen.FromPoint(this.Location);
    this.Location = new Point(s.WorkingArea.Right - this.Width,
                              s.WorkingArea.Height - this.Height);
    base.OnLoad(e);
}
当我处于VisualStudio调试模式时,这就像一种魅力。当我构建一个安装程序并安装应用程序(在同一个开发框上)并运行它时,坐标略有不同,并且表单没有完全固定在角落中。所以我把这个卡在了OnLoad中:

MessageBox.Show(this.Location.X + "x" + this.Location.Y);
在开发模式下,它显示1355x720,但当我安装时,它显示1365x730

为什么要谨慎?很明显,我可以减去10让我的代码正常工作,但我想解释一下这种行为

更新:

  • 这台机器是Windows 8.1 Pro 64位,带有多个监视器
  • 不同的是表单大小(而不是
    Screen.WorkingArea
    )。在开发模式下,表单大小显示为245x140,但安装时显示为235x130
  • 我也无法给出表单焦点。表单上有一个文本框,用于接收focus onload。它有一个闪烁的插入符号,但在我实际单击文本框之前我无法键入。只有在我安装它时才会发生这种情况;从VS运行时工作正常。我怀疑这与窗体位置离开屏幕边缘有关
  • 表单的
    最上面的
    设置为True

  • 这可能是空气动力学,它取决于形状的外部宽度和高度。将边框样式设置为“无”可以解决此问题,但您没有边框。:-)如果我使用FormBorderStyle=None,问题就会消失,这是正确的。我认为有更好的办法解决这个问题。我能把@Hans救出来吗?Hans发了一篇关于将表单捕捉到屏幕边缘的帖子,我不知道这对你是否有用:@Equalsk不,它做的和我的代码做的一样,只是没有设置
    位置
    ,而是设置
    左侧
    顶部
    。我怀疑这台机器上的快照代码也会减少10像素。这似乎是一个相关的问题。还有这里