• 25
  • 1月

在实践《C#入门经典》中Windows编程部分,使用代码控制RichTextBox中SelectionFont属性时有这样的代码:
Font oldFont, newFont;
// Get the font that is being used in the selected text
oldFont = this.richTextBoxText.SelectionFont;

// If the font is using bold style now, we should remove the formatting
if (oldFont.Italic)
{
newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic);
}
else
{
newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic);
}
this.richTextBoxText.SelectionFont = newFont;
this.richTextBoxText.Focus();
用来修改选中文本的字体属性,但实际调试时发现,在某些时候选中文本(尤其是对于一些被复制进来的文本)的SelectionFont;会为null,这样传入newFont构造函数中的oldFont也为null,造成调试失败。而书上并没有提及此事。

目前我采取的方法是将oldFont赋值那句改为:
// Get the font that is being used in the selected text
oldFont = this.richTextBoxText.SelectionFont == null ? this.richTextBoxText.Font : this.richTextBoxText.SelectionFont;
在SelectionFont为空时直接采用RichTextBox的Font属性,目前看来还算解决了问题。

难道作者没有发现这个问题???

标签:

您可以对这篇文章发表一条评论,或者在您自己的网站中引用 (Trackback) 它

对《RichTextBox的SelectionFont属性为空问题》有 3 条评论

  1. djbone 说:

    没错没错··全选的时候就发生了~~~

  2. novioslim 说:

    LZ這樣還是有問題的。雖然避開了NULL值,但是混合選擇時 this.richTextBoxText.Font.Bold 這個屬性永遠是FALSE
    就是說變成粗體后無法變回來了。。。

  3. Tony Zhu 说:

    感谢回复指出问题。这是我07年初学C#时写的东西了。最近在做的一直是B/S模式开发,很长时间没做过GUI了。

发表一条评论

所有标签:.net Ajax Java javascript Linux map MySQL RSS TD-SCDMA Ubuntu vim web Win7 乱码 基础知识 备份 奥运会 希望泉 性能 缓存 编程