最近一直在看C#入门经典今天看做15章的一个简单文本编辑器时候遇到了一些问题。。
第一:在写一个可以把选中文本在斜体字和正常字切换的按钮。。但写完了之后只能变成斜体就变不回来了。。
但是和他类好似的代码。都可以实现转换 以下是代码。。
private void Italic_Click(object sender, EventArgs e)
        {
            Font oldFont;
            Font newFont;
            oldFont = this.richTextBoxText.Font;
            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();
        }
还有在写设置字体大小的文本框的Validated时候按书上的代码是这样的
private void textBoxSize_Validated(object sender, EventArgs e)
        {
            ApplyTextSize(txt.Text);
            this.richTextBoxText.Focus();
        }
但是这之中的txt是在Keypress事件中定义的代码如下
private void textBoxSize_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13)
                e.Handled = true;
            else if (e.KeyChar == 13)
            {
                TextBox txt = (TextBox)sender;
                if (txt.Text.Length > 0)
                    ApplyTextSize(txt.Text);
                e.Handled = true;
                this.richTextBoxText.Focus();
            }
        }
编译器也会报错。。我把txt改成this的话只要运行想改变字体大小就会出错
求救

解决方案 »

  1.   

     将oldFont = this.richTextBoxText.Font;改成oldFont = this.richTextBoxText.SelectionFont;即刻
      

  2.   

    你前后两个设置的不一致,一个使用的font一个使用的selectionfont自然就改不过来了,将前后统一一下
      

  3.   

    谢谢。。是我一不小心打错了。居然还没看出来真是丢脸。不过后面的Validated事件依然不知道是怎么一回事额
      

  4.   

    谢谢。。是我一不小心打错了。居然还没看出来真是丢脸。不过后面的Validated事件依然不知道是怎么一回事额
      

  5.   

    private void textBoxSize_Validated(object sender, EventArgs e)
      {
      ApplyTextSize(txt.Text);
      this.richTextBoxText.Focus();
      }
    你这里掉了一句应该加上以下红色部分,加上后是private void textBoxSize_Validated(object sender, EventArgs e)
      {
    TextBox txt = (TextBox)sender;
      ApplyTextSize(txt.Text);
      this.richTextBoxText.Focus();
      }
      

  6.   

    _Validated事件详见 http://www.cnblogs.com/limingluzhu/archive/2011/11/09/2243695.htmlApplyTextSize()大概是你写的方法,你没有把这个方法的代码贴出来 不好解释
    this.richTextBoxText.Focus();表示焦点锁定在richTextBoxText控件(说白了就是光标在richTextBoxText框内一闪一闪的)
      

  7.   

    确实是这样。。书上是真少了不过我还有最后一个问题。就是包括这个事件和Keypress事件。直接用控件名调用Text值传给ApplyTextSize可以吗?就是不要第一步的转换。
      

  8.   

    应该可以,将tex.text直接替换成textboxsize.text