C# 安装程序时,窗体位置(设置为OnLoad)不同
我有一个Windows窗体应用程序,在启动时,我使用以下代码将其停靠在屏幕右下方: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 -
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让我的代码正常工作,但我想解释一下这种行为
更新:
Screen.WorkingArea
)。在开发模式下,表单大小显示为245x140,但安装时显示为235x130最上面的设置为True
这可能是空气动力学,它取决于形状的外部宽度和高度。将边框样式设置为“无”可以解决此问题,但您没有边框。:-)如果我使用FormBorderStyle=None,问题就会消失,这是正确的。我认为有更好的办法解决这个问题。我能把@Hans救出来吗?Hans发了一篇关于将表单捕捉到屏幕边缘的帖子,我不知道这对你是否有用:@Equalsk不,它做的和我的代码做的一样,只是没有设置
位置
,而是设置左侧
和顶部
。我怀疑这台机器上的快照代码也会减少10像素。这似乎是一个相关的问题。还有这里