在richtextbox 中, 当前选中的text中混合着不同的字体大小,我想把这一段选中的字体加粗,但不改变各字体大小, 
可是打开fontdialog之后,就会选中一个默认的字体大小,加粗的同时把我的字体大小也给修改了,如何是好?

解决方案 »

  1.   

    可以参考一下这个做法:
    int start = this.richTextBox1.SelectionStart;
    int count = this.richTextBox1.SelectionStart + this.richTextBox1.SelectionLength;
    for (int i = start; i < count; i++)
    {
    this.richTextBox1.SelectionStart = i;
    this.richTextBox1.SelectionLength = 1;
    this.richTextBox1.SelectionFont = new Font(this.richTextBox1.SelectionFont, this.richTextBox1.SelectionFont.Style | FontStyle.Bold);
    }
    this.richTextBox1.SelectionStart = start;
    this.richTextBox1.SelectionLength = count;
      

  2.   

    谢谢,这也是个办法, 可是如果一定要通过fontdialog来呢? 因为除了加粗也有可能要加下划线什么的
      

  3.   

    你可以试着按如下来做:
    FontDialog fd = new FontDialog();
    bool mult = this.richTextBox1.SelectionFont==null;
    fd.Font = this.richTextBox1.SelectionFont;
    if (fd.ShowDialog(this) == DialogResult.OK)
    {
    if (!mult)
    {
    this.richTextBox1.SelectionFont = fd.Font;
    return;
    }
    int start = this.richTextBox1.SelectionStart;
    int count = this.richTextBox1.SelectionStart + this.richTextBox1.SelectionLength;
    for (int i = start; i < count; i++)
    {
    this.richTextBox1.SelectionStart = i;
    this.richTextBox1.SelectionLength = 1;
    if (fd.Font != null)
    {
    this.richTextBox1.SelectionFont = new Font(this.richTextBox1.SelectionFont, fd.Font.Style);
    }
    }
    this.richTextBox1.SelectionStart = start;
    this.richTextBox1.SelectionLength = count;
    }
      

  4.   

    两问题:
    1. 按msdn所說,如果选择的text里包括有混合的字体,那richTextBox1.SelectionFont应该返回null, 可事实是总是返回 {Name = "SimSun" Size=13.0}   不知道是不是rechtextbox的一个bug?2. 不知道应该给richTextBox1.SelectionFont给一个什么样的font  再ShowDialog时,在字体大小textbox中不默认选择任何字体,就像在wwordpad中一样. 
      

  5.   

    我是试过了N多种方法都不成功.快晕掉了我靠. 用户在这地方还非要做得象wordpad一樣的处理方式
      

  6.   

    richTextBox1.SelectionFont属性在有多个字体的时候确实是null值,没有问题。不过,好像当richTextBox1.SelectionFont为null的时候FontDialog并不会显示“空字体”,我觉得可以忽略这一点,因为这个时候字体名称已不重要了,重要的是是否粗体,是否有删除线等其它的属性。如果要细究这个问题就没有什么意义了,必竟RichTextBox控件的功能有限。
      

  7.   

    richTextBox1.SelectionFont属性在有多个字体的时候确实是null值,没有问题这个我还是没试出来,每一次都是返回的都是{Name = "SimSun" Size=13.0}字体, 不知是否有什么属性要配置?
      

  8.   

    明白, 只有是不同的字体,而不是不同的字大小才会返回null