C#Win Forms应用程序标准字体引发异常(“高度”属性)

问题描述:

我有一个Win Form C#应用程序,我允许用户为标签设置字体。默认字体存储在此应用程序的Properties.Settings条目中,并使用字体对话框进行选择。C#Win Forms应用程序标准字体引发异常(“高度”属性)

Properties.Settings

enter image description here

在我的应用程序,我这个字体分配给标签:

Label.Font = Glob.ps.evFont; // Glob.ps is the Property.Settings for this app 

出于某种原因,当我试图显示这个标签,我得到一个“参数无效“与字体的”高度“属性相关的异常。

enter image description here

我试过的字体是相当香草Windows字体(宋体,濑越UI等)。如果我在标签中明确地创建字体,该应用程序的工作原理如下:

Label.Font = new Font("Arial", 12.0F, FontStyle.Bold); 

任何想法发生了什么?

+1

[文档](https://msdn.microsoft.com/en-us/library/system.windows.forms.control.font(v = vs.110).aspx)阐明了一些this:_“Font属性是一个环境属性,ambient属性是一个控制属性,如果未设置,则从父控件中检索。例如,Button将默认具有与其父窗体相同的BackColor。 。**由于Font是不可变的(意思是你不能调整它的任何属性),所以你只能给Font属性指定一个新的Font。但是,你可以将新的字体设置为现有的字体**“_ – stuartd

+1

You可能能够使用'Label.Font = new Font(Glob.ps.evFont);' – stuartd

+1

相当不健康,通常意味着您正在泄漏绘图对象。使用任务管理器,添加“GDI对象”列。几百个上衣是正常的。通过在必要时使用Dispose()或* using *语句来修复。 –

设置是否可以正确读取?
创建一个空的winform项目,通过应用程序设置测试设置字体,并以代码的形式结束了这样的代码,它工作正常。
设置断点并在应用字体后看到标签高度属性更改(增加)。

namespace WinForm 
    { 
     public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 

       // Apply font from the properties settings 
       fontLabel.Font = WinForm.Properties.Settings.Default.evFont; 
      } 
     } 
    } 
+0

它适用于我这样的样本。我将字体设置为“Arial,Bold,9 pts”,然后将其分配给一个简单的标签。在断点处,高度报告为18(我假设它已转换为像素),大小为9.0(原始大小,以磅为单位)。 – MrSparkly