【发布时间】:2015-03-05 13:12:27
【问题描述】:
我的表单中有 2 个文本框,一个用于右侧的内容 (mainTextBox),另一个用于左侧的行号 (linesTextBox)。两个框的高度相同,并且都是多行文本框。
每当mainTextBox 中的文本发生变化时,我都会调用writeLineNumbers(mainTextBox.Lines.Count()) 方法,该方法运行一个for 循环来填充linesTextBox。它看起来像这样:
private void mainTextBox_TextChanged(object sender, EventArgs e)
{
int linecount = mainTextBox.Lines.Count();
writeLineNumbers(linecount);
}
private void writeLineNumbers(int linecount)
{
linesTextBox.Text = "";
int i = 1;
foreach (var lines in mainTextBox.Lines)
{
linesTextBox.AppendText(i + "\n");
i++;
}
}
这很有效,但是一旦超过 50 行,系统就会非常费力且速度很慢。我已经尝试了其他一些事情,但我似乎无法找到一种方法来做到这一点。
我尝试过这种方式,但它非常有问题并且经常中断,但我认为我在正确的轨道上
private void writeLineNumbers(int count)
{
int lineBoxCount = linesTextBox.Lines.Count();
int mainBoxCount = count;
if (lineBoxCount != mainBoxCount && lineBoxCount > mainBoxCount)
{
while (lineBoxCount > mainBoxCount)
{
linesTextBox.Text = linesTextBox.Text.Remove(linesTextBox.Text.LastIndexOf(Environment.NewLine));
lineBoxCount--;
}
}
else if (lineBoxCount != mainBoxCount && lineBoxCount < mainBoxCount)
{
while (lineBoxCount < mainBoxCount)
{
linesTextBox.AppendText(count + "\n");
lineBoxCount++;
}
}
}
【问题讨论】:
标签: c# winforms textbox line-numbers