【问题标题】:Opening winforms in the same screen同屏打开winforms
【发布时间】:2013-08-05 03:24:31
【问题描述】:

我有一个包含多个获胜表格的应用程序。我注意到,如果用户有多个屏幕显示并将应用程序更改为一个屏幕,则由其他按钮调用的其他表单将在主显示中打开,而不是我的主应用程序或表单所在的位置。

我该如何更改?

【问题讨论】:

标签: vb.net


【解决方案1】:

您可以在您的表单上使用Form.CenterToParent 方法,然后它们将以您正在创建的表单为中心打开,或者您可以使用屏幕类来获取您的主应用程序正在运行的显示器的边界,然后将其传递给您创建的表单。

编辑:

重新考虑分配Owner 可能就足够了,但我此时没有启动双显示器计算机进行测试

Dim frm As Form1 = New Form1()
frm.Owner = Me
frm.CenterToParent()
frm.Show()

编辑

刚刚有机会去看看。正如我认为将Owner 分配给新的Form 或使用Form.Show(IWin32Window) 将在与原始Form 相同的屏幕上打开新的Form

frm.Show(Me)


看起来CenterToParent 属性现在受到保护。 根据 MSDN 链接

不要直接从您的代码中调用 CenterToParent 方法。相反,将 StartPosition 属性设置为 CenterParent。 如果表单或对话框是顶级的,则 CenterToParent 将表单相对于屏幕或桌面居中

【讨论】:

  • 注意:在我的测试中,仅仅设置 Owner 是不够的。并且Form.CenterToParent() 受到保护,因此您不能直接调用它。
  • 看起来他们在较新的框架中改变了它。根据我在回答中的链接,它说要使用 Form.SetPosition 和 CenterParent 枚举。
  • 然而,奇怪的是,只使用frm.Show(Me) 确实对我有用。很奇怪。
  • 在将所有者从一个屏幕移动到另一个屏幕后,没有一个选项对我有用。新表单将在创建所有者的屏幕上弹出。
  • 这种方式对我有用:stackoverflow.com/questions/32411839/…
猜你喜欢
  • 2014-05-22
  • 2013-10-19
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
  • 2016-11-22
  • 2011-11-30
  • 2023-02-21
  • 1970-01-01
相关资源
最近更新 更多