C#Win Forms应用程序标准字体引发异常(“高度”属性)
问题描述:
我有一个Win Form C#应用程序,我允许用户为标签设置字体。默认字体存储在此应用程序的Properties.Settings条目中,并使用字体对话框进行选择。C#Win Forms应用程序标准字体引发异常(“高度”属性)
在我的应用程序,我这个字体分配给标签:
Label.Font = Glob.ps.evFont; // Glob.ps is the Property.Settings for this app
出于某种原因,当我试图显示这个标签,我得到一个“参数无效“与字体的”高度“属性相关的异常。
我试过的字体是相当香草Windows字体(宋体,濑越UI等)。如果我在标签中明确地创建字体,该应用程序的工作原理如下:
Label.Font = new Font("Arial", 12.0F, FontStyle.Bold);
任何想法发生了什么?
答
设置是否可以正确读取?
创建一个空的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
[文档](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
You可能能够使用'Label.Font = new Font(Glob.ps.evFont);' – stuartd
相当不健康,通常意味着您正在泄漏绘图对象。使用任务管理器,添加“GDI对象”列。几百个上衣是正常的。通过在必要时使用Dispose()或* using *语句来修复。 –