我在MS VS2017在MS Windows 10,具有限制宽度的VB.NET的WinForm程序,但应该高度相同,任何正常的Windows应用程序最大化。我有多个不同大小的显示器,这似乎与应用程序如何确定桌面高度有关。我要指出,我的任务栏设置为不跨过第二屏幕扩大,但只出现在主屏幕上(这似乎并没有影响,虽然其他Windows应用程序的行为)。制作WinForm的形式最大限度地桌面高度与多个屏幕
我使用的Move
事件处理程序下面的代码(我试图重写WndProc
过,但没有运气),但形式最大化背后主屏幕上的任务栏,即它占用整个屏幕高度,它应该占据全屏高度减去任务栏高度。但是,它会在辅助屏幕上最大化到正确的高度。
Private Sub form1_Move(sender As Object, e As EventArgs) _
Handles MyBase.Move
Me.MaximumSize = New Size(Me.MaximumSize.Width, _ 'fixed width
My.Computer.Screen.Bounds.Height) 'screen height
End Sub
今天,我试图改变行:
Me.MaximumSize = New Size(Me.MaximumSize.Width, _ 'fixed width
My.Computer.Screen.FromControl(Me).WorkingArea.Height) 'screen height
但是这现在导致更复杂,但还是不正确的行为! (在辅助屏幕上不是全高)。我也尝试使用SystemInformation.VirtualScreen.Height
,但同样,没有运气
什么是管理,以获得正确的高度,正确的方法是什么?
这里是一个图像中描述的两个问题,左边是主显示器,最大化的形式是高度将其一部分放在任务栏后面,右边是高度最大的辅助显示器足够高以填充没有任务栏的屏幕。如上所述,一些代码最终还没有在主监视器上最大化时甚至没有遇到任务栏。基本上我只是想让它像任何其他应用程序一样最大化,正确地在任一监视器上,有或没有任务栏,但宽度有限。
不要做,不好的可用性,更多的技术挑战。取而代之的是制作一个合适的多显示器应用程序,一个窗体显示在屏幕上,另一个窗体显示在屏幕2上。用户可以决定是否要分屏(WIN +左,右,如果他们只有1个显示器)或显示1个窗体每台用于双显示器设置。如果他们有3个监视器,并且恰好有3个全屏幕表单选项(如此等等),这可以很好地扩展。 – Neolisk
@Neilisk我认为你已经意识到我的意思是错误的,我的意思是它应该只在一个屏幕上作为普通应用程序最大化,只是它应该像平常一样最大化,即:底部没有任何额外的空间,并且没有改变为大小,这意味着它的一部分是在任务栏后面 – Toby
我以为你想跨越2+屏幕最大化。你能附上截图/样机来解释吗? – Neolisk