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