【问题标题】:.NET how to change windows default font?.NET 如何更改 windows 默认字体?
【发布时间】:2011-11-05 06:48:01
【问题描述】:

我想在我的 .NET CF 应用程序中更改 MessageBox 字体,但发现这并不容易(甚至不可能)。
一些建议更改 windows 的默认字体,因为 MessageBox 使用它。
方便的方法是:桌面属性/外观/高级...
但是我如何通过使用 .NET 类库的代码来做到这一点?
有一个属性可以获取消息框的系统默认字体:

SystemFonts.MessageBoxFont

但是如何设置呢?
我尝试在 Windows XP 中调用 SystemParametersInfo() win32 本机函数,它使用 SPI 值 SPI_SETNONCLIENTMETRICS。

但在 Win CE 5.0 中,它返回错误代码 1439 / ERROR_INVALID_SPI_VALUE,这意味着不支持设置像字体这样的一些值。
我用谷歌搜索了一下,发现THIS 页面列出了适用于 Windows CE 3.0 的 SPI,而我的设置当前默认消息框的 SPI 不存在。
那么如何更改消息框的 Windows 默认字体?

【问题讨论】:

    标签: fonts .net-cf-3.5


    【解决方案1】:

    我怀疑是否有一种受支持的方法可以从代码中更改它。这是用户可以控制的系统范围的选项。 MS 喜欢避免诱使开发人员更改此类设置。

    即使有办法从代码中更改系统范围的设置,我也敦促您不要这样做。而是编写您自己的消息框对话框,并随意使用您喜欢的任何字体。

    【讨论】:

    • 但是如果我在我自己的自定义 MessageBox 类中显示一个 Form 对象作为对话框,关于我正在使用 Windows CE 5.0 和 .NET CF 3.5,它会很重并且是不快!
    • 速度在这里不是问题。对话框等待用户输入!!显示自定义表单完全没有问题。
    • 也许你是对的,但是当我尝试显示/隐藏表单时,它的动作太慢了。但是谢谢。
    • 如果显示带有标签和几个按钮的表单很慢,则会出现其他问题
    • 并没有你想象的那么慢,但它不如 MessageBox 内置的用户警报那么快,甚至慢得多。请测试两种类型并进行比较。
    猜你喜欢
    • 2022-12-15
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多