为什么“Environment.NewLine"”保持不变,即使我向上移动一条线
本文关键字:一条 移动 NewLine Environment quot 为什么 | 更新日期: 2023-09-27 18:16:13
我正在尝试使用VS2013和c#创建我的文本编辑器。为了创建文本区域,我使用RichTextBox
。我试图添加一个侧边栏(TextBox
),它计数(增加和减少)在RichTextBox
的行数每当用户点击进入或每当它上升一行。
我的问题是,我已经注意到,System.Environment.NewLine
,即先前自动添加到RichTextBox
(每当用户单击Enter时),仍然保留在RichTextBox
上,即使我上升一行。
你在我的代码中看到任何错误/打字错误吗?
private void newLineDown_EventHandler(object sender, KeyEventArgs ea)
{
//Other if statement
else if (ea.KeyCode == Keys.Back)
{
// If the number of lines in the RichTextBox decreased,
//I could rewrite the lines in the TextBox
if (this.textBox1.Lines.Length < rows)//WRONG:
///In fact, I have to control the number of lines in richTextBox1!!
{
this.textBox1.Text = "";//Clearing the TextBox
--rows;//Decreasing the count variable
//Redrawing the numbers that represent the number of lines.
for (int i = 1; i <= rows; i++)
{
this.textBox1.Text += i.ToString();
this.textBox1.Text += System.Environment.NewLine;
}
}
}
}
如果我理解正确,您可以像这样处理TextChanged
事件
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
textBox1.Text = richTextBox1.Lines.Length.ToString();
}
这会自动更新RTB中的行数,包括当您删除字符时。
我发现了错误:我控制了textBox1的行数,而不是RichTextBox的行数:
private void TextChanged_EH(object sender, EventArgs ea)
{
this.textBox1.Text = "";
/* When the cursor is on the first line,
Count() returns 0,
but I still want to write 1 on the first line of the textBox1 */
if(this._rtb.Lines.Length == 0)
this.textBox1.Text += '1';
for (int i = 1; i <= _rtb.Lines.Count(); i++)
{
this.textBox1.Text += i.ToString();
this.textBox1.Text += System.Environment.NewLine;
}
}