2011-12-15 74 views
3

在WinForms應用程序中,根據屏幕分辨率和最大化和調整窗口大小,處理重新調整控件的最佳方式是什麼?我有3個像這樣設置的列。每列中都有LABEL TEXTBOX。你可以把它算作6列。我已經嘗試將錨定在右側,但問題是第1列中的文本框將重疊接下來的2列。我也嘗試了對接,但似乎沒有辦法。有沒有簡單的方法來做到這一點?如何根據分辨率重新調整控件大小?

回答

3

TL; DR:您不能沒有手動編碼調整大小的邏輯。作爲一個方面說明,你可能不應該試圖做到這一點。

在傳統的WinForms中,沒有自動的方法來實現我自己的知識而不用自己的解決方案。 Sean87suggestedAutoScaleMode屬性,但雖然它是自動的,但不支持按分辨率自動調整大小。它提供了一個基於Windows中字體大小設置或DPI設置進行縮放的選項。當簡單地改變屏幕分辨率時,這些都不會直接改變,並且,實際上,大多數典型用戶(甚至可能是高級用戶)可能從不修改DPI或字體大小設置。

此外,從基本的用戶角度來看,增加屏幕分辨率的重點是爲應用程序窗口提供更多的虛擬桌面「空間」。實際上,大多數顯示器現在都是基於LCD的,因此有native resolutions改變這種情況主要是CRT過去的事情。但是,購買新的,更大的顯示器的行爲會讓典型的用戶增加這個虛擬屏幕空間,以便他們可以同時在屏幕上看到更多的窗口。一個始終保持與屏幕分辨率相同的相對大小的應用程序,我認爲並不常見,並且與大多數用戶的期望相反,甚至包括我們的高級開發人員用戶。

通常,如果窗口被調整大小,您將編碼您的應用程序以智能且有用地調整其內容,但通常您會按照用戶的要求管理它,因爲它是他們的機器和他們的偏好(將其視爲「我的房子,我的規則「原則)。這也是爲什麼大多數(所有?)應用程序不會更改窗口位置,除非用戶直接操作(通過拖動窗口框等)。事實上,所有這些都可能解釋了爲什麼微軟選擇而不是以包含任何基於分辨率的自動調整規則。

0

你可以改變表格的AutoScaleMode以及每個控件的auto size屬性。你可以使用splitcontainer或者panel來組成你的專欄。

1

您沒有定義「列」的含義。通常,您應該使用TableLayoutPanel並在每個「單元格」內設置控件的錨點。

相關問題