我寫了一個C#窗體窗體應用程序,它是爲1280x1024屏幕設計的。它完全充滿了控制。我需要爲1024x600屏幕創建一個「輕量級」版本,該版本可以在上網本上使用相同的代碼庫。我認爲最簡單的方法是#ifdef設計文件並定義一些在構建時選擇的變量&進行多個構建,但是我希望在解決方案中有第二個項目,它繼承了第一個窗體和使用設計師重新安排各種列表框,文本框等,也許可以製作一些標籤來保存不太相關的信息。在visual studio 2010中做這件事最簡單的方法是什麼?製作Windows窗體/應用程序的較小屏幕分辨率版本的最簡單方法?
回答
這就是Control.Anchor
屬性的用途。您需要將其設置爲希望調整大小的控件。
從MSDN:
使用
Anchor
屬性來定義如何爲它的父控件大小控制會自動調整大小。將控件錨定到其父控件可確保在調整父控件大小時,錨定的邊相對於父控件的邊保持相同的位置。您可以將控件錨定到其容器的一個或多個邊緣。例如,如果你有一個
Button
其Anchor
屬性值被設置爲Top
和Bottom
一個Form
,所述Button
被拉伸以保持頂端和Form
作爲Form
的Height
的底部邊緣的錨定的距離增加。
對您而言,壞消息是確實沒有快捷簡單的解決方案。當您使用像上網本或平板電腦這樣的較小外形時,您需要注意的特定用戶體驗元素在兩種環境之間的轉換效果不佳。這就是說,如果你用你所有的邏輯創建一個基礎表單,你可以從它繼承每個屏幕的形狀因子,並分別設計兩個表單。
如果您遵循此路徑,將事件處理程序連接到設計器中的事件時,Visual Studio中存在一個錯誤 - 它不會允許您連接到位於父類中的事件處理程序。設計師會崩潰。要解決此問題,請手動連接事件處理程序,如下所示:
this.MyButton.Click += new System.EventHandler(this.MyClickEventHandler);
祝您好運!
我必須對這個100%的錯誤陳述給予回答。 ** - 「對你來說壞消息是,沒有一個簡單的解決方案。」** –
Ramhound,你有什麼建議呢?到目前爲止,我最喜歡我的ifdef解決方案。我可以創建一個新窗體,使用相同的變量名稱進行設計,複製並粘貼設計代碼,並根據構建將其封鎖。我希望我所要做的就像繼承整個班級,然後使用設計師重新安排控制。 – analog123
@Rhhound - 那是錯的?我不知道任何能夠自動解決此問題的產品或工具。使用對接和錨定工作的快速和簡單的解決方案 - 根據需要 - 改變表單的整體外觀 - 基本上 - 不會滿足analog123的需求。在我看來,擁有兩個獨立的佈局是最好的解決方案,但要避免代碼重複,這在WinForms中太簡單了,需要花費很多工作量。作爲一個方面說明 - 我假設在這裏構建和部署 - 在運行時檢測屏幕大小。 – GKlesczewski
- 1. WPF作物應用程序窗口到屏幕分辨率
- 2. Windows 8應用程序中的屏幕分辨率檢測
- 3. Windows窗體應用程序中的背景分辨率差
- 4. 作物屏幕最大化分辨率
- 5. 適應屏幕分辨率
- 6. 最簡單的方法來製作一個簡單的GUI窗體窗體應用程序
- 7. 優化我的應用程序的多個屏幕分辨率
- 8. 屏幕分辨率
- 9. 屏幕分辨率
- 10. 屏幕分辨率
- 11. 屏幕分辨率
- 12. 屏幕分辨率
- 13. 屏幕分辨率
- 14. 如何使用c#windows應用程序設置windows屏幕分辨率
- 15. WPF,任何使用不同屏幕分辨率的簡單方法?
- 16. 字體大小超過HDPI/MDPI分辨率的小屏幕
- 17. 應用程序支持所有的i-Phone屏幕分辨率?
- 18. 全屏幕不同分辨率的應用程序
- 19. 混合應用程序的屏幕尺寸和分辨率
- 20. Ionic 2大屏幕分辨率的應用程序
- 21. 如何遷移iPhone 5屏幕分辨率的應用程序?
- 22. Android的屏幕分辨率
- 23. Android的屏幕分辨率
- 24. C++的屏幕分辨率
- 25. iPhone模擬器屏幕分辨率vs iPhone屏幕分辨率
- 26. Windows窗體錯誤的分辨率VB.NET
- 27. Android應用屏幕分辨率問題
- 28. 簡單的HTML/CSS的問題 - 高度和屏幕分辨率
- 29. 屏幕大小分辨率問題
- 30. Java屏幕分辨率大小
或者您可以製作多種表格,然後使用當前屏幕分辨率顯示相應的表單。 –
好吧,你*可以*做到這一點,但這意味着你正在重複代碼,違反了DRY原則。你最終得到兩種你需要維護的表單。 – Lou
@QuanticProgramming - 這是我在本網站上看到的最糟糕的編程思想。 –