簡體   English   中英

如何將Windows窗體適合/重新調整為任何屏幕分辨率?

[英]How do I fit/re-size Windows Form to any screen resolution?

我知道這是重復的問題,但我檢查了所有其他相關的問題,他們的答案沒有幫助(結果仍然與屏幕截圖2中顯示的相同)

screenshot1

我是c#windows表單的新手。 如屏幕截圖1所示,我有Form1 ,其中包含一些控件,每組控件都放在一個面板中。 我在PC1中設計了應用程序,如屏幕截圖1所示,它符合屏幕分辨率並且運行良好。

Screenshot2

我的應用程序是在1366 x 768屏幕分辨率下開發的(如屏幕截圖1所示)但是當我在具有不同顯示器尺寸和不同屏幕分辨率的不同計算機(PC2)中運行此應用程序時,表單顯得太大而且部分應用程序丟失或者是離開屏幕。

然而,我使用Anchors解決了這個問題,但是出現了另一個問題:用戶控件沒有重新調整大小(如屏幕截圖2所示),部分內容被剪切或移至panel1下。 我不知道問題是與用戶控制有關還是與Form1中的所有控件有關(他們應該自己調整大小)

我甚至嘗試了以下代碼,但結果仍然相同:

this.WindowState = FormWindowState.Maximized;
this.Location = new Point(0, 0);
this.Size = Screen.PrimaryScreen.WorkingArea.Size;
Screen.PrimaryScreen.WorkingArea

昨天我一直在尋找解決這個問題,但我失敗了,請幫助我任何想法/建議它可能會起作用。 謝謝

如果您正在使用Windows窗體而無法切換到WPF,那么您更願意以必須運行的最低分辨率進行所有設計。

在WinForms中,您要設置每個元素的大小,以便它們不會根據應用程序大小重新調整大小。 他們將要做的是沿着空白區域分發(如果你為它們編程),增加它們之間的自由空間,就是這樣。

另一個選項是LayoutPanels,正如Sinatr所說,他們試圖提供WPF面板功能。

默認情況下,在WinForms中,您在設計表單時放置的所有控件都具有固定大小 如果你沒有做任何特別的事情,無論你放置什么樣的機器,當你放置它們時控件的大小都是它們總是具有的大小。

正如你所注意到的那樣,並不總能帶來好結果。 解決它的方法是使用流暢的布局 ,自由使用TableLayoutPanel和/或FlowLayoutPanel容器控件,以及各個子控件的AnchorDock屬性。 如果您特別注意在表單上正確布置控件,可以動態調整其大小並重新排列以適應可用的屏幕空間。

這段代碼

this.WindowState = FormWindowState.Maximized;
this.Location = new Point(0, 0);
this.Size = Screen.PrimaryScreen.WorkingArea.Size;
Screen.PrimaryScreen.WorkingArea

什么都不做 你唯一需要的是第一行。 一旦您使表單最大化,它將填滿整個屏幕。 您無需通過設置其“ Size或“ Location屬性來強制它。 事實上,那些對最大化形式沒有影響。

問題可能是表單上的控件不會自動調整大小(如上所述)。 如果你有一個足夠大的屏幕,你會看到表格填滿屏幕但沒有控件的空白區域。 你有相反的問題:在較小的屏幕上,控件不適合,因此彼此重疊。

這不是一個完美的情況。 即使您編寫了一個完美的動態布局,如果您嘗試在屏幕明顯小於您的設計的系統上運行該應用程序,您最終會得到太小而無法戳的按鈕。 這就是為什么應用程序通常不是這樣設計的。 屏幕上的按鈕是糟糕的 UI。 這種設計唯一可以接受的是當你設計一個觸摸屏UI,比如餐廳POS。 在這種情況下,您已經非常清楚客戶將要使用的屏幕大小,因為它是所有專業硬件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM