在第二个显示器上运行VB.net应用程序

3
我是编码的新手,但我已经为我所工作的计划做了简单的应用程序!
最近我遇到了一个“小”的问题。我建立了一个Windows窗体应用程序,它有多个表单,运行在双屏幕CNC上。CNC程序必须在较高分辨率的主屏幕上运行。我的应用程序运行在第二个屏幕上,这是一个1024*768触摸屏。
问题在于,如果我使用调试数据运行代码,一切都按照我的意愿进行,打开应用程序后所有的下一个表单都在这个屏幕上打开。如果我使用发布的数据安装它,所有的表格都会在主屏幕上打开,即使我将它们拖到第二个屏幕上。当我关闭它们后,它们会回到主屏幕。
我能否在每个表单的开始处加入一行代码,让所有表单都在第二个屏幕上打开呢?
当设置正确工作后,我将锁定屏幕设置,以确保没有人会更改设置。
请对我温柔一点,我没有任何关于如何编码的知识。我是通过自学和在网上阅读学习的!!
谢谢大家!

3
请参阅Screen.AllScreens 属性 - LarsTech
@LarsTech,感谢你的回复,我已经看到了这个函数,但是不知道如何使用它!正如上面所说,我对VB.NET编码毫无经验。 - Boushard
2个回答

3

类似这样的代码可以将窗口定位于第一个非主要屏幕上的偏移量为100, 100的位置。您可以根据需要调整位置和/或大小。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim secondaryMonitor = Screen.AllScreens.FirstOrDefault(Function(x) Not x.Primary)
    If secondaryMonitor IsNot Nothing Then
        Dim newLocation = secondaryMonitor.Bounds.Location
        newLocation.Offset(100, 100) ' adjust as needed
        Me.Location = newLocation
        ' Also see Me.Size and Me.Bounds
    End If
End Sub

工作得非常好。非常感谢!! 小的缺点是,我必须在每个表单上放置此字符串。试图将其放入类中,但是由于我不在表单中,所以'me.location'无法使用!! - Boushard
@Boushard 如果你想在另一个类中实现这个功能,你可以将表单实例(Me)作为参数传递给方法 - 例如 Sub MoveToSecondaryMonitor(form As Form),然后使用form.Location,最后在表单中调用MoveToSecondaryMonitor(Me) - Mark
你太棒了,一切都按照我的要求工作了!非常感谢您!!您为我节省了大量时间!! - Boushard

0
这对我有用:
Private Sub _MainForm_Move(sender As Object, e As EventArgs) Handles MyBase.Move
         ' preserve  me.Location.x  and  me.Location.y  here.
End Sub

Then, at program boot, restore:       me.Location.x  and  me.Location.y

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接