【问题标题】:How to set the windows screen resolution using c# windows application如何使用 c# windows 应用程序设置 windows 屏幕分辨率
【发布时间】:2012-11-16 00:47:23
【问题描述】:

我在 c# winforms 中做过一个项目。我想将屏幕的分辨率设置为 1680 x 1050, 当应用程序在任何电脑上运行时。怎么办?

【问题讨论】:

标签: c#


【解决方案1】:

正如其他人已经提到的,您不应该自动更改分辨率,因为用户将其设置为他喜欢的特定分辨率(或者他的硬件工作得最好)。

因此,您应该更改应用程序,而不是更改分辨率。使用TableLayoutPanelFlowLayoutPanel 和/或SplitContainer。设置控件的AnchorDock 属性,并考虑设置应用程序中每个控件的MinimumSizeMaximumSize

这样您的应用程序可以在不同的分辨率之间自动缩放,用户可以选择他喜欢的分辨率。

最后但同样重要的是,您的应用程序不仅应该考虑用户选择的分辨率,还应该考虑选择的 dpi 设置。 Windows UX Guide(站点 592)中描述了您应该注意哪一个。

【讨论】:

  • 刚刚投了反对票。不要误会我的意思,您提供的答案非常翔实,但您没有回答问题。就个人而言,我想知道这个我不打算分发的个人项目,所以其他人的显示器是否支持分辨率不是我关心的问题(我确实意识到原始海报确实说“在任何电脑上运行”,但对我来说,正确的答案应该给出上述建议,但仍然回答问题)
  • @DarkHippo:在这种情况下,不要投反对票。只需提出一个新问题,参考这个问题并说出您的情况有何不同。
【解决方案2】:

我建议你不要做这些事情。屏幕分辨率由用户设置,您不应自动更改。这与更改配色方案、声音方案或任何其他基于用户的偏好一样糟糕,而用户对此一无所知,更不用说让您的程序去做了。至少显示一个对话框,让用户选择要做什么。
话虽如此,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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多