MSDN里说,RichTextBox.SelectionFont在选择了两个不同的字体之后,会是一个NULL。
    但是今天我在选择的字体有两个不同FontStyle的情况下,SelectionFont还是正常的,代码如下:
    
    Font newFont = new Font(this.richTextBox1.SelectionFont, this.richTextBox1.SelectionFont.Bold ?this.richTextBox1.SelectionFont.Style & ~FontStyle.Bold : richTextBox1.SelectionFont.Style | FontStyle.Bold);
    richTextBox1.SelectionFont = newFont;    我选择的文字中,Fontstyle有Bold的,也有Italic的,其他属性相同。但是这段代码也能正常工作,想请教一下,什么情况下SelectionFont就会判断这是同样的字体,什么情况下判断这不是呢?

解决方案 »

  1.   

    目前我采取的方法是逐個字符檢測:        private void btnBold_Click(object sender, EventArgs e)
            {
                Font oldFont;
                Font newFont;
                int i;
                
                i = richTextBoxTest.SelectedText.Length;
                int k = richTextBoxTest.SelectionStart;  //record SelectionStart
                for (int j = richTextBoxTest.SelectionStart; j < i + k; j++)
                {
                    richTextBoxTest.Select(j,1);
                    oldFont = this.richTextBoxTest.SelectionFont; //== null ? this.richTextBoxTest.Font : this.richTextBoxTest.SelectionFont;                if (oldFont.Bold)
                        newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);
                    else
                        newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold);                this.richTextBoxTest.SelectionFont = newFont;
                }
                this.richTextBoxTest.Focus();
                richTextBoxTest.Select(k, i);
    }
      

  2.   

    第一個屬性不一樣的 就會NULL,比如宋體 和 明細體