为什么RichTextBox的Font.Size属性在设计时可编辑,但在编译时只读?

时间:2012-06-01 15:59:28

标签: c# winforms fonts richtextbox font-size

此代码:

private void comboBoxFontSize_SelectedIndexChanged(object sender, EventArgs e) {
    rtbResults.Font.Size = Convert.ToInt32(comboBoxFontSize.SelectedItem);
}

...生成此错误信息:“属性或索引器'System.Drawing.Font.Size'无法分配给 - 它只读”

更新

尝试建议的修复后,我在运行时得到了这个:

System.FormatException未处理   消息=输入字符串格式不正确。   来源= mscorlib程序   堆栈跟踪:        在System.Number.StringToNumber(String str, ...

好的,我看到:我使用的是Convert.ToInt32(),但是comboBox中的第一个值是“8.25” - 显然,这不是一个int。

所以我尝试了Convert.ToDouble()并且不会编译。

然后我在智能感知中看到“调用此方法总是抛出'System.InvalidCastException'”*

  • 以及Convert.ToSingle()

所以我必须将组合框的值从8.25更改为8吗? 8.25是默认值...... ???

再次更新

我周末读过(在Petzold的WP7书中,我认为)8.25对应于11.因此,我认为这里提到的8.25是像素,对应于字体大小11,这更有意义现在(虽然仍然过于误导/混淆)。

1 个答案:

答案 0 :(得分:5)

因为Font是不可变的......

Why is Font immutable?

使用

rtbResults.Font = new Font(rtbResults.Font.FontFamily, Convert.ToInt32(comboBoxFontSize.SelectedItem), 
rtbResults.Font.Style)

或您需要的其他Font构造函数。