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

B. *_*non -2 c# fonts richtextbox font-size winforms

这段代码:

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

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

UPDATE

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

System.FormatException未处理Message =输入字符串格式不正确.Source = mscorlib StackTrace:at System.Number.StringToNumber(String str,...

好吧,我明白了:我使用的是Convert.ToInt32(),但是comboBox中的第一个值是"8.25" - 显然,这不是一个int.

所以我尝试了Convert.ToDouble(),这将无法编译.

然后我在intellisense中看到"调用此方法总是抛出'System.InvalidCastException'"*

  • 以及Convert.ToSingle()

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

再次更新

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

Rap*_*aus 5

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

为什么Font不可变?

使用

rtbResults.Font = new Font(rtbResults.Font.FontFamily, Convert.ToInt32(comboBoxFontSize.SelectedItem), 
rtbResults.Font.Style)
Run Code Online (Sandbox Code Playgroud)

或者你需要的另一个Font构造函数.