我在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