C# 如何将按钮字体设置为Marlett

C# 如何将按钮字体设置为Marlett,c#,winforms,button,fonts,truetype,C#,Winforms,Button,Fonts,Truetype,我正在尝试将button的字体设置为系统的Marlett字体。但是,虽然我手动设置了字体,但使用了其他字体。此外,当我使用字体对话框为该按钮选择字体时,Marlett未列出 为什么会这样?如何在.NET Windows窗体控件中使用Marlett字体 button1.Font = new Font("Marlett",8, FontStyle.Regular); 将此代码用于按钮名称Button1,您希望更改的位置(在IIInitializeComponet或表单加载事件后从Constr

我正在尝试将button的字体设置为系统的Marlett字体。但是,虽然我手动设置了字体,但使用了其他字体。此外,当我使用字体对话框为该按钮选择字体时,Marlett未列出

为什么会这样?如何在.NET Windows窗体控件中使用Marlett字体

   button1.Font = new Font("Marlett",8, FontStyle.Regular);

将此代码用于按钮名称Button1,您希望更改的位置(在IIInitializeComponet或表单加载事件后从Constructor中)

虽然我不知道设计器背后的代码,但我始终发现自定义安装的字体不会显示在设计器中。好消息是
Font
属性是环境属性,因此如果希望所有控件都具有相同的
Font
,则只需将其设置在
窗体上。但是,似乎您只希望一个控件具有
字体
,因此让我们这样做:

ctrl.Font = new Font("Marlett", 8.5f);
例如,它将该控件的
Font
设置为
Marlett
,大小为
8.5


如果您希望一整套控件具有相同的
Font
如果它们可以放置在像
面板那样的容器中,那么您只需设置
面板的
Font
;因为这也是一个环境属性。

默认情况下,设计器似乎希望将GdiCharSet设置为0。这会导致Marlett字体退回到另一种字体

如果将GdiCharSet更改为1,它将正常渲染


还要注意它在.designer.cs中所做的更改,这也将解释为什么当您从代码中手动设置字体时它会起作用。

这就是我最终的工作

ctrl.Font = new System.Drawing.Font("Marlett", 12f, FontStyle.Regular, GraphicsUnit.Point, ((byte)(1)));

最后一个((字节)(1))将GdiCharSet设置为1,这是@Paul在另一个答案中指出的。

机器上安装了字体吗?是的,我肯定是。好的,请回答问题并添加用于设置
字体的代码。
。没有代码。我正试图从Windows窗体设计器中执行此操作。Marlett是一种内置字体,带有诸如最小化、最大化、关闭、滚动条箭头等标志符号。设计器无法正确设置它(即使我强制设置,手动输入字体名),但您的代码解决方案确实有效。谢谢@斯派克,我真的很高兴能帮上忙!