为什么即使我上一行,“Environment.NewLine”的数量仍保持不变?

时间:2014-08-03 08:57:32

标签: c# newline richtextbox

我正在尝试使用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;
                    }
            }
        }       
    }

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您可以像这样处理TextChanged事件

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
   textBox1.Text = richTextBox1.Lines.Length.ToString();
}

这应该会自动更新RTB中的行数,包括删除字符时的行数。

答案 1 :(得分:0)

我发现错误:我控制的是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;
    }
}