【问题标题】:Prevent windows form from moving across screen when another is opened防止窗体在打开另一个窗体时在屏幕上移动
【发布时间】:2017-12-01 20:51:19
【问题描述】:

我目前正在创建一个 Windows 窗体应用程序,它可以在多个窗体之间切换以显示不同的屏幕。一件烦人的事情是,当我从一个表单切换到下一个表单时,它会将新表单窗口从上一个表单窗口向下移动一点。例如:

form1 
     form2
          form3
               form4

我正在使用 .Hide() 和 .Show() 在表单之间切换。

有没有办法防止这种情况发生?例如,当我打开 form2 时,我可以将它放在 form1 所在的完全相同的位置吗?

如果有帮助的话,我正在使用 VS2017。

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    将表单的StartPositionWindowsDefaultLocation 更改为手动,并在构造函数中设置Location

    【讨论】:

    • 今天编写 dpiAware 代码非常重要。在构造函数中这样做是很值得怀疑的,你还不知道窗口的实际大小。使用 Load 事件的少数几个好理由之一,StartPosition 属性无关紧要。
    【解决方案2】:

    没有办法阻止这种情况,因为它默认设置为向用户发出他正在打开新用户的信号。如果它直接显示在顶部,可能会使用户感到困惑,因为他可能认为之前的窗口已被破坏/删除。

    不过,您始终可以使用以下帖子自行设置位置: Setting form's location when calling Form.Show()

    ConnectingForm CF = new ConnectingForm();
    CF.StartPosition = FormStartPosition.CenterParent;
    CF.Show(this);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多