winform的RichTextBox使用

1、设置指定文字颜色、字体等格式
设置richTextBox前10位字符格式。(第0位开始,往后10个字符)

 //设置指定的选择内容
 richTextBox.Select(0, 10); 
 //颜色
 richTextBox.SelectionColor = Color.FromArgb(64, 165, 252); 
 /*或者
 richTextBox.SelectionColor = Color.Red; */
 //字体
 richTextBox.SelectionFont = new Font("微软雅黑", 15, FontStyle.Regular, GraphicsUnit.Pixel, 134);
 //其他更多格式,richTextBox.Selection...
 
 //取消选中的字符
 richTextBox.SelectionLength = 0;

或者,另一种选择内容方式

 //设置焦点所在文本的位置,选定文本的起始点
 richTextBox.SelectionStart = 0; 
 //设置选定的字符数
 richTextBox.SelectionLength = 10;
 //颜色
 richTextBox.SelectionColor = Color.FromArgb(64, 165, 252); 
 /*或者
 richTextBox.SelectionColor = Color.Red; */
 //字体
 richTextBox.SelectionFont = new Font("微软雅黑", 15, FontStyle.Regular, GraphicsUnit.Pixel, 134);
 //其他更多格式,richTextBox.Selection...

2、获取RichTextBox的所有行(Line)数据(不包括自动换行,比如自动换行为2行的算一行)

 string[] line = richTextBox.Lines; 

3、获取指定字符位置在RichTextBox中的所在行(Line),及所在行在RichTextBox的首末位置

 //设置选定文本的起始点
 int index = richTextBox.SelectionStart;
 int[,] lineNum = GetRichTextLineIndex();
 int indexLine = GetCurrentEndLocation(index, lineNum);
 richTextBox.SelectionStart = lineNum[indexLine, 1];
 
 //整个文本框的line所有起始位置
 public int[,] GetRichTextLineIndex()
 {
    string[] line = richTextBox.Lines;
    int[,] lineNum = new int[line.Length, 2];
    for (int i = 0; i < line.Length; i++)
    {
        lineNum[i, 0] = (i == 0) ? 0 : lineNum[i - 1, 1] + 1;
        lineNum[i, 1] = lineNum[i, 0] + line[i].Length;
    }
    return lineNum;
 }
//指定位置在文本框的哪个line末位
public int GetCurrentEndLocation(int index, int[,] lineNum)
{
    int result = -1;
    if (lineNum != null && lineNum.Length > 0)
    {
        for (int i = 0; i < lineNum.Length; i++)
        {
            if (index >= lineNum[i, 0] && index <= lineNum[i, 1])
                return i;
        }
    }
    return result;
}

4、获取当前焦点在RichTextBox的行(其中自动换行的另外算一行,比如自动换行2行,就是2行),及指定行row所在RichTextBox的位置

  //焦点所在的位置
  int cursorLocationFirst = richTextBox.GetFirstCharIndexOfCurrentLine();
  //焦点所在位置的行row
  int indexRow = richTextBox.GetLineFromCharIndex(cursorLocationFirst);
  //整个RichTextBox的最后一行(包括自动换行)
  //整个行数 = lastRow + 1
  int lastRow = richTextBox.GetLineFromCharIndex(richTextBox.Text.Length); 
  //指定行row在RichTextBox的位置
  int nextRowIndex = this.GetFirstCharIndexFromLine(indexRow + 1);

你可能感兴趣的:(WinForm,c#)