private void AddNumbersToLines(RichTextBox Rchtxt, int PadValue)
{
List<string> lines = new List<string>();
padnumbers = new List<string>();
lines = richTextBox1.Lines.ToList();
for (int i = 0; i < lines.Count; i++)
{
string padnumber = (i + 1).ToString("D" + PadValue);
padnumbers.Add(padnumber);
lines[i] = padnumber + " " + oldlines[i];
}
Rchtxt.Lines = lines.ToArray();
}
仅为数字着色
private void RichTextboxColorFirstLetter(RichTextBox Rchtxt, Color color)
{
if (padnumbers.Count > 0)
{
for (int i = 0; i < padnumbers.Count; i++)
{
string text = Rchtxt.Lines[i].Substring(0, padnumbers[i].Length);
Rchtxt.Select(Rchtxt.GetFirstCharIndexFromLine(i), text.Length);
Rchtxt.SelectionColor = color;
}
}
}
numericupdown事件
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
AddNumbersToLines(richTextBox1, (int)numericUpDown1.Value);
richTextBox1.SelectAll();
richTextBox1.SelectionColor = Color.Black;
RichTextboxColorFirstLetter(richTextBox1, Color.Red);
}
在构造函数
中oldlines = richTextBox1.Lines.ToList();
AddNumbersToLines(richTextBox1, 5);
RichTextboxColorFirstLetter(richTextBox1, Color.Red);
oldlines和padnumbers是List type
有两个问题。
第一种是当我按下数字按钮按钮在程序运行时向上或向下更改值而不是逐个点击但是不停地按下它,它的填充正常但开始慢,然后变得越来越快。如何从一开始就快速添加和填充数字?
第二个问题是如果有行例如:
001 hello world
当我更改numericupdown中大多数行的值时,填充号和文本之间有一个空格,如:001 Hello 所以它会根据填充号向右推。
001 Hello.....0001 Hello.....0001 Hello
但如果它像第一个例子那样:
001 hello world......001 hello world......001 hello world
它不会推动你好世界,直到它完成填充所有空间,如下:
001 hello world......001 hello world......001
我需要以某种方式找到填充数和每行中的文本之间有多少空格,并在每次更改numericupdown值时保持添加相同数量的空格。但不知道该怎么做。