2017-04-11 80 views
2

我在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,但同樣,沒有運氣

什麼是管理,以獲得正確的高度,正確的方法是什麼?

這裏是一個圖像中描述的兩個問題,左邊是主顯示器,最大化的形式是高度將其一部分放在任務欄後面,右邊是高度最大的輔助顯示器足夠高以填充沒有任務欄的屏幕。如上所述,一些代碼最終還沒有在主監視器上最大化時甚至沒有遇到任務欄。基本上我只是想讓它像任何其他應用程序一樣最大化,正確地在任一監視器上,有或沒有任務欄,但寬度有限。 screen-grab

+0

不要做,不好的可用性,更多的技術挑戰。取而代之的是製作一個合適的多顯示器應用程序,一個窗體顯示在屏幕上,另一個窗體顯示在屏幕2上。用戶可以決定是否要分屏(WIN +左,右,如果他們只有1個顯示器)或顯示1個窗體每臺用於雙顯示器設置。如果他們有3個監視器,並且恰好有3個全屏幕表單選項(如此等等),這可以很好地擴展。 – Neolisk

+0

@Neilisk我認爲你已經意識到我的意思是錯誤的,我的意思是它應該只在一個屏幕上作爲普通應用程序最大化,只是它應該像平常一樣最大化,即:底部沒有任何額外的空間,並且沒有改變爲大小,這意味着它的一部分是在任務欄後面 – Toby

+1

我以爲你想跨越2+屏幕最大化。你能附上截圖/樣機來解釋嗎? – Neolisk

回答

2

查看WM_GETMINMAXINFO的文檔,但是這些文檔在.NET中公開。

你也可能想看看WM_WINDOWPOSCHANGING消息。

這兩個允許你控制你的窗口的大小。

+0

Roger後面的表單相同的問題,我沒有想法如何從vb.net訪問win APi ...我試過它使用'Marshal.PtrToStructure'和'Marshal.StructuretoPtr',並使用''屬性定義的結構,但是會導致訪問衝突。沒有mumbo jumbo MSDN的任何快速示例都給了我? :D – Toby

+1

http://pinvoke.net/default.aspx/Structures/MINMAXINFO.html –

+0

我認爲這與.NET中已經暴露的內容沒有任何優勢。設置'MaximumSize'填充將從WM_GETMINMAXINFO處理程序報告的值,'WM_WINDOWPOSCHANGING'不是很有用,因爲如果你可以爲'WM_GETMINMAXINFO'提供正確的值就不需要它。我相信OP的問題是他們不知道如何計算最大高度,而不能將其傳遞給Windows管理員。 – GSerg

0

使用這會給你的最大高度與任務欄

SystemParameters.WorkArea.Height

而且這篇文章可能有助於 full screen mode, but don't cover the taskbar

+0

我的VS2017似乎無法識別'System.Windows.SystemParameters',並且它沒有在框架中顯示可用於添加的引用...是否需要添加一些安裝? – Toby

+0

對不起,我沒有VS2017這裏[鏈接](https://msdn.microsoft.com/en-us/library/system.windows.systemparameters%28v=vs.110%29.aspx)它說這是它的一部分PresentationFramework – AlexVMM

+0

啊,我使用的是WinForms,而不是WPF(如問題標題所示)。 – Toby

相關問題