导航

关于《C#入门经典》中的SelectionFont属性为null

Posted on 2010-06-04 02:42  碧落  阅读(586)  评论(2)    收藏  举报

该属性出现在winform编程部分的

14.6.2.RichTextBox控件:

private void buttonBold_Click(object sender, EventArgs e)
        {
            Font newFont;
            Font oldFont;
            oldFont = this.richTextBoxText.SelectionFont;
            if (oldFont.Bold)
                newFont = new Font(oldFont, oldFont.Style &~FontStyle.Bold);
            else
                newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold);
            this.richTextBoxText.SelectionFont=newFont;
            this.richTextBoxText.Focus();
        }

  例子用于修改选中文本的字体属性,但是当我使用搜狗输入法的网站自动补全功能时,出现了一个bug, is.richTextBoxText.electionFont始终为null.

  经再三测试之后,发现原因在于:SelectionFont不能同时读取不同字体的属性.

  而使用搜狗输入法时,输入的标点符号的字体与其他文字的字体不是同一种字体.因此始终为null,对于该问题暂时只能当SelectionFont为null时,直接采用当前显示文本的Font属性:

oldFont=this.richTextBoxText.SelectionFont==null?this.richTextBoxText.Font:this.richTextBoxText.SelectionFont;

  这是初步解决方法,来自于http://www.seebit.org/page/18/,想要继续完善只能等我学完winform才行呐才学C#一个月,实在是艰难的旅程啊.

  目前遇见的最大难题,运行程序时出现(未将对象引用设置到对象的实例。。)的错误,这种错误的原因实在是多种多样啊,全部有待解决.