【发布时间】:2015-10-21 19:03:38
【问题描述】:
我正在尝试使用下面的代码在辅助屏幕上打开 winform
ff.FormBorderStyle = FormBorderStyle.None;
ff.Left = sc[1].Bounds.Left; value 1366
ff.Top = sc[1].Bounds.Top;
ff.Height = sc[1].Bounds.Height;
ff.Width = sc[1].Bounds.Width;
Console.WriteLine(ff.Left); // output 1366
ff.Show();
Console.WriteLine(ff.Left); // output 50
为什么值会在节目中发生变化,并且因为该表单在主屏幕中打开。即使在 Visual Studio 属性窗口中,当我尝试更改位置的 x、y 参数时,一旦我离开属性单元格,值也会更新为旧值。可能是什么问题。
【问题讨论】:
-
如果您关心窗口在屏幕上的位置,那么您必须使用 Load 事件。当它触发时,将应用由于用户偏好而对窗口大小进行的微小更改。并且由于视频 DPI 设置的变化,迫使表单重新缩放。大的变化。只有这样,您才能正确对齐窗口。 StartPosition 属性无关紧要。顺便说一句,使用 Load 事件的少数几个好理由之一。