WinForms应用程序UI受Windows UI设置的影响

WinForms应用程序UI受Windows UI设置的影响,winforms,user-interface,Winforms,User Interface,如何确保我的应用程序用户界面不受Windows UI设置的影响?我应该对我的应用程序做哪些更改以防止它发生?我没有确切的答案。只有建议,也是因为我使用Delphi,没有使用winforms的经验 找到所有受Windows UI设置影响的区域将是一个挑战。这将是一个挑战,因为大多数开发环境都会不遗余力地让您轻松地遵循应用程序中的UI设置,而不是否决/忽略(更改)它们 至少你必须: 轮到主题化支持 否决标准Windows颜色、字体、格式(日期、时间、数字、货币等)和度量。并确保您的应用程序不会响应

如何确保我的应用程序用户界面不受Windows UI设置的影响?我应该对我的应用程序做哪些更改以防止它发生?

我没有确切的答案。只有建议,也是因为我使用Delphi,没有使用winforms的经验

找到所有受Windows UI设置影响的区域将是一个挑战。这将是一个挑战,因为大多数开发环境都会不遗余力地让您轻松地遵循应用程序中的UI设置,而不是否决/忽略(更改)它们

至少你必须:

  • 轮到主题化支持
  • 否决标准Windows颜色、字体、格式(日期、时间、数字、货币等)和度量。并确保您的应用程序不会响应任何Windows关于更改这些设置的消息(否则您将回到原点)。所涉及的信息似乎是:
    WM\u-WININICHANGE
    WM\u-SETTINGCHANGE
    WM\u-FONTCHANGE
    WM\u-themechaned
    ,但可能还有更多。在Delphi中,我可以通过将
    Application.UpdateFormatSettings
    Application.UpdateMetricSettings
    设置为False来获得一些经验,这将确保应用程序在收到WM_WININICHANGE消息时不会更改任何这些设置。我想WinForms应用程序可能也有类似的策略,但您仍然需要处理(或者忽略)其他消息
  • 或者,请确保您在开发环境中没有使用任何使您易于遵循这些设置的功能。例如,请确保不要使用任何标准颜色常量(如
    clWindowText
    ),这些常量不是真正的常量,而是告诉IDE/编译器/库从Windows设置中提取值的特殊值。你将不得不对通常通过Windows设置控制的所有东西采取同样的方法

最后,我认为这样做不值得,而且,正如我在对你的问题的评论中提到的,用户不会感谢你这么做。虽然我知道这是您的客户提出的请求,但您可能需要考虑返回该客户并说服他们这不是一个好主意。

我没有确切的答案。只有建议,也是因为我使用Delphi,没有使用winforms的经验

找到所有受Windows UI设置影响的区域将是一个挑战。这将是一个挑战,因为大多数开发环境都会不遗余力地让您轻松地遵循应用程序中的UI设置,而不是否决/忽略(更改)它们

至少你必须:

  • 轮到主题化支持
  • 否决标准Windows颜色、字体、格式(日期、时间、数字、货币等)和度量。并确保您的应用程序不会响应任何Windows关于更改这些设置的消息(否则您将回到原点)。所涉及的信息似乎是:
    WM\u-WININICHANGE
    WM\u-SETTINGCHANGE
    WM\u-FONTCHANGE
    WM\u-themechaned
    ,但可能还有更多。在Delphi中,我可以通过将
    Application.UpdateFormatSettings
    Application.UpdateMetricSettings
    设置为False来获得一些经验,这将确保应用程序在收到WM_WININICHANGE消息时不会更改任何这些设置。我想WinForms应用程序可能也有类似的策略,但您仍然需要处理(或者忽略)其他消息
  • 或者,请确保您在开发环境中没有使用任何使您易于遵循这些设置的功能。例如,请确保不要使用任何标准颜色常量(如
    clWindowText
    ),这些常量不是真正的常量,而是告诉IDE/编译器/库从Windows设置中提取值的特殊值。你将不得不对通常通过Windows设置控制的所有东西采取同样的方法

最后,我认为这样做不值得,而且,正如我在对你的问题的评论中提到的,用户不会感谢你这么做。虽然我知道这是您的客户提出的请求,但您可能需要考虑返回该客户并说服他们这不是一个好主意。

为什么要这样做?你认为如果你强迫用户使用不同的设置,而不是他们喜欢的设置,用户会很高兴吗?这毕竟是他们当初选择他们的原因之一?或者,您是在说确保应用程序在运行时不会被告知这些设置的更改吗?也不是很好,但更容易理解。我理解你的意见,但这是我的客户要求啊,他(他)支付账单。。。有时根本无法说服他们……这就是为什么微软试图让人们不可能做错事的原因。陈雷蒙(Raymond Chen)多次谈到这一点:理想的情况是,无论有钱人有多想要做错事,都不可能做错事。你为什么要这样做?你认为如果你强迫用户使用不同的设置,而不是他们喜欢的设置,用户会很高兴吗?这毕竟是他们当初选择他们的原因之一?或者,您是在说确保应用程序在运行时不会被告知这些设置的更改吗?也不是很好,但更容易理解。我理解你的意见,但这是我的客户要求啊,他(他)支付账单。。。有时根本无法说服他们……这就是为什么微软试图让人们不可能做错事的原因。雷蒙德·陈(Raymond Chen)曾多次谈到这一点:美国