为什么“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;
                    }
            }
        }       
    }

为什么“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;
    }
}