0

根据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 行,但是最后一行只是一个空行?

我如何处理富文本框中的行限制,或者如何确保当用户单击输入时我不会移动到下一行,并且只有在富文本框中有 1 行时才移动到下一行?

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

4

2 回答 2

1

您已经对可用的标签进行了枪击。但这应该让你知道如何去做。该KeyDown事件发生在 TextChanged 事件之前。所以我会拦截击键,检查 Enter 键,如果行数为 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 文本框控件,但仍会显示用户键入的字符。

于 2012-06-01T01:56:56.853 回答
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
}
于 2012-06-01T02:50:59.007 回答