C#学习记录(34)windows应用程序基础之RichTextBox控件

    TextBox常用于从用户处获取简短的文本字符串,而RichTextBox用于显示和输入格式化的文本(例如,黑体、下划线和斜体),它使用标准的格式化文本,称为Rich Text Format(富文本格式)或RTF。

    属性:

    SelectionAlignment           对齐方式            this.richTextBoxText.SelectionAlignment = HorizontalAlignment.Center;

    SelectionFont                    选中文本或者插入点的字体格式    this.richTextBoxText.SelectionFont = newFont;

    RTF特有的事件

    LinkClicked                 在用户单击文本中的链接时,引发该事件
    Protected                   在用户尝试修改已经标记为受保护的文本时,引发该事件
    SelectionChanged     在选中文本发生变化时,引发该事件。如果因某些原因不希望用户修改选中的文本,就可以在这里禁止修改

     LoadFile                加载.rtf文件

     SaveFile                保存.rtf文件

     Focus                    焦点中心

    一.UI界面设计

                            

    二.业务逻辑       

 1.设置字体格式处理程序

    private void buttonBold_Click(object sender, EventArgs e)
    {
      Font oldFont;
      Font newFont;

      // 首先获取当前选中文本正在使用的字体,并把它赋给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();//为控件设置输入焦点

    }

    2.下划线处理函数、斜体处理函数

    代码与上面的代码相同,但检查对应样式的代码不同。

    3.居中处理函数

    private void buttonCenter_Click(object sender, EventArgs e)
    {
          if (this.richTextBoxText.SelectionAlignment == HorizontalAlignment.Center)
                this.richTextBoxText.SelectionAlignment = HorizontalAlignment.Left;
          else
                this.richTextBoxText.SelectionAlignment = HorizontalAlignment.Center;
                this.richTextBoxText.Focus();

    }

    4.尺寸文本编辑框函数

     private void textBoxSize_KeyPress(object sender, KeyPressEventArgs e)
    {
          // 移除所有不是数字、删除退格键和回车键的字符
          if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13)
          {
                e.Handled = true;    //true表示事件已经处理过了,不再处理该事件
          }
          else if (e.KeyChar == 13)///如果按键输入的是回车键
          {       
                TextBox txt = (TextBox)sender;
                if (txt.Text.Length > 0)    //文本长度大于0
                      ApplyTextSize(txt.Text);    //设置文本尺寸
                e.Handled = true;////移除字符
                this.richTextBoxText.Focus();///为控件设置输入焦点
          }

    }

    5.应用文本框显示的数字

     private void ApplyTextSize(string textSize)
    {
          float newSize = Convert.ToSingle(textSize);
          FontFamily currentFontFamily;

          Font newFont;

      // 将富文本选中的字体家族赋值给当前字体家族

          currentFontFamily = this.richTextBoxText.SelectionFont.FontFamily;
      // 将新字体设置为当前字体家族和新的尺寸
          newFont = new Font(currentFontFamily, newSize);
      // 将新字体设置为富文本控件的选中字体
          this.richTextBoxText.SelectionFont = newFont;
    }

    6.labellink链接事件

    private void richTextBoxText_LinkClicked(object sender, LinkClickedEventArgs e)
    {
        System.Diagnostics.Process.Start(e.LinkText);    ///这个操作可以记忆下来,包括打开文件夹,音乐,影音等

    }

    7.加载.rtf文件

     private void buttonLoad_Click(object sender, EventArgs e)
    {
          try
          {
                richTextBoxText.LoadFile("Test.rtf");    //加载文件
          }
          catch (System.IO.FileNotFoundException)
          {
                MessageBox.Show("No file to load yet");

          }

    }

    8.保存.rtf文件

     private void buttonSave_Click(object sender, EventArgs e)
    {
        try
        {
                richTextBoxText.SaveFile("Test.rtf");
        }
        catch (System.Exception err)    ///基本操作,捕抓异常并用消息框弹出来
        {
                MessageBox.Show(err.Message);
        }

    }

    程序运行如下:

                

猜你喜欢

转载自blog.csdn.net/shenseyoulan/article/details/80938737