Richtextbox行限制问题

时间:2012-06-01 01:23:08

标签: c# asp.net .net vb.net

RichTextBox_TextChanged事件下,我有

   if RichTextBox.Lines.Count() > 2
   {
      //Message Box to display the user that you are typing more than 2 lines
    }

所以我发生的是当我在

中有这些数据时
 [0] - "East coast road"
 [1]- "New York"

富文本框,当我点击Enter时,似乎它进入了这种状态

   [0] - "East coast road"
   [1]- "New York"
   [2] -""  

我收到弹出框的消息说不能超过2行,但是最后一行只是一个空行?

  

如何处理富文本框中的行限制或我如何处理   确保当用户点击Enter时我不会移动到下一行   仅当富文本中有1行时才移动到下一行   箱?

这会将计数返回到3,其中应该只有2,如何消除下一行的空格?

2 个答案:

答案 0 :(得分:1)

你有可能对可用的标签进行了一些打击。但这应该会让你知道如何做到这一点。 KeyDown事件发生在TextChanged事件之前。所以我会拦截击键,检查输入键,如果行数是2或更大,我会处理它。像这样的C#winforms例子:

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter && richTextBox1.Lines.Length >= 2)
        e.Handled = true;
}

Handled财产上回答您的问题。

来自链接:

  

处理由Windows窗体中的不同控件实现。对于TextBox这样的控件,它是本机Win32控件的子类,它被解释为意味着不应将关键消息传递给底层本机控件。如果在TextBox上将Handled设置为true,则该控件不会将按键事件传递给基础Win32文本框控件,但它仍会显示用户键入的字符。

答案 1 :(得分:0)

试试这个

String[] myLines = RichTextBox.Text.Split("\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)

这将使用换行符拆分文本并删除所有空格。请注意,它不仅会删除最后一个空白行,还会删除其间的任何空行

或者您可以使用此方法

int lCount = RichTextBox.Lines.Count();
if(String.IsNullOrEmpty(RichTextBox.Lines[lCount-1]))
    lCount--;

if lCount > 2
{
  //Message Box to display the user that you are typing more than 2 lines
}