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);