2010-04-28 70 views
2

我已經在c#winforms中完成了一個項目。我想將應用程序在任何pc上運行時,將屏幕分辨率設置爲1680 x 1050, 。怎麼做 ?如何使用c#windows應用程序設置windows屏幕分辨率

+2

那麼如果我的屏幕不支持該分辨率會發生什麼? – 2010-04-28 08:03:03

+0

可能的重複http://stackoverflow.com/questions/215412/programmatically-change-screen-resolution – 2010-04-28 08:04:52

回答

5

前面已經提到,你不應該自動更改分辨率他人,導致用戶將其設置爲自己喜歡特定的分辨率(或他的作品硬件最好的)。

因此,不應更改分辨率,而應更改應用程序。使用TableLayoutPanel,FlowLayoutPanel和/或SplitContainer。設置控件的AnchorDock屬性,並考慮在應用程序中設置每個控件的MinimumSizeMaximumSize

這樣,您的應用程序可以自動縮放不同的分辨率,用戶可以選擇他喜歡的。

最後但並非最不重要的一點,您的應用程序不僅應該考慮關注用戶選擇的分辨率,還應該注意所選的dpi設置。在Windows UX Guide(網站592)中描述了您應該關注哪一個。

+0

@Downvoter:任何評論爲什麼downvote這? – Oliver 2012-10-16 14:24:56

+0

剛剛投了票。不要誤會我的意思,你提供的答案非常豐富,但你沒有回答這個問題。就我個人而言,我想知道這是一個我不打算分發的個人項目,所以其他人的顯示器是否支持該決議並不是我的問題(我意識到原始的海報確實說「在任何pc上運行「,但對我來說,正確的答案應該給出上述建議,但仍然回答這個問題) – 2013-08-15 14:20:05

+0

@DarkHippo:在這種情況下,請不要投票。簡單地問一個新問題,參考這個問題,並說出你的情況有什麼不同。 – Oliver 2013-08-16 06:06:35

4

我會建議你不要做這些事情。屏幕分辨率由用戶設置,這是你不應該自動改變的。這與改變顏色方案,聲音方案或任何其他基於用戶的偏好一樣糟糕,而用戶不知道任何事情,更不用說想讓程序去做。至少顯示一個對話框並讓用戶選擇要做什麼。
話雖如此,here's an example on how to do this

3

那麼,他不是說他的應用程序將改變其他系統的決議。您不應該改變其他人電腦的屏幕分辨率;但是,用戶可能需要通過單獨的實用程序更改自己的分辨率(出於不同的原因)。這是我現在的情況,所以我必須在C#中編寫一個簡單的實用程序來使用InteropServices來完成此操作。調用ChangeDisplaySettings。這是聲明:

[DllImport("user32.dll")] 
public static extern int ChangeDisplaySettings(
ref DEVMODE devMode, int flags);