如何创建不稳定字号?RichTextBox修改字体大小报错求助(无需新Font)
解决RichTextBox字体大小修改的问题
嘿,我太懂你碰到的这个坑了!咱们一步步拆解问题:
为啥会报错?
你看到的错误"non-invocable member 'Font Size' cannot be used like a method",原因有两个:
Font.Size是一个只读属性,不是方法,所以不能像调用函数那样加括号()去传值;- 在.NET里,
Font对象是不可变的——一旦创建出来,它的所有属性(包括字号、字体家族、样式)都没法直接修改,必须通过创建新的Font对象来更新。
那怎么实现修改字号?
你说“不创建新Font”,其实严格来说做不到,因为Font的设计就是不可变的,但我们可以复用原有Font的所有其他属性,只替换字号,这样操作起来和“修改原有Font”几乎没区别,代码也很简洁:
首先得把FontSize这个TextBox里的文本转换成数值(因为Font.Size是float类型),然后用原有Font的字体家族、样式等属性创建新的Font:
// 先做安全的类型转换,避免输入非数字导致报错 if (float.TryParse(FontSize.Text, out float newFontSize)) { // 复用原Font的FontFamily、Style,只更新Size tb3.Font = new Font(tb3.Font.FontFamily, newFontSize, tb3.Font.Style); }
补充小提示
- 如果你的
FontSize输入的是整数(比如12、16),用int.TryParse转成int再转成float也可以,效果一样; - 一定要加
TryParse的判断,防止用户输入非数字内容导致程序崩溃。
内容的提问来源于stack exchange,提问作者Akın Işık
相关产品推荐
相关产品推荐

