-2

这段代码:

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

...生成此错误消息:“无法将属性或索引器‘System.Drawing.Font.Size’分配给——它是只读的”

更新

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

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

好的,我明白了:我使用的是 Convert.ToInt32() 但组合框中的第一个值是“8.25” - 这显然不是一个 int。

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

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

  • 以及 Convert.ToSingle()

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

再次更新

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

4

1 回答 1

5

因为字体是不可变的......

为什么字体不可变?

利用

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

或您需要的另一个 Font 构造函数。

于 2012-06-01T16:03:54.770 回答