如何在RichTextBox中设置一行的MaxLength?

时间:2017-10-26 17:25:01

标签: c# .net wpf richtextbox

我想知道无论如何我都可以为RichTextBox中的一行设置最大字符数。我知道我可以为整个Box设置一般的MaxLength,但不能为行本身设置。

  • 我认为唯一的解决方案,或者至少是一个可行的解决方案,是选择TextRange中的行,计算字符并检查它是否大于我手动设置的最大数量。然后,使用以下命令创建一个新行:

    myRichTextBox.AppendText(Environment.NewLine);
    

    并将插入位置设置为选择的结尾,类似于:

    myRichTextBox.CaretPosition = myRichTextBox.Selection.End;
    

这是解决我问题的最佳方法,还是有更简单的方法呢?

2 个答案:

答案 0 :(得分:1)

您可以设置按键事件,触发后,验证密钥和所需长度,并在需要时附加Environment.NewLine。

答案 1 :(得分:0)

我认为这是一个棘手的问题,他的代码几乎可以解决问题:

private void myRichTextBox_TextChanged(object sender, EventArgs e)
{
    int maxLen = 10;
    int CursorIndex = myRichTextBox.SelectionStart;



    var text = myRichTextBox.Text;

    int startIndex = text.Substring(0, CursorIndex).LastIndexOf("\n") + 1;
    int endIndex = text.IndexOf("\n", CursorIndex, text.Length - CursorIndex);

    // if (startIndex < 0) startIndex = 0;
    if (endIndex < 0) endIndex = text.Length;


    string line = text.Substring(startIndex, endIndex - startIndex).Trim();

    if (line.Length > maxLen)
    {
        int insertionPoint = startIndex + maxLen;
        text = text.Insert(insertionPoint, "\n");
        CursorIndex += (insertionPoint < CursorIndex) ? 1 : 0;
        myRichTextBox.Text = text;
        myRichTextBox.SelectionStart = CursorIndex;
    }

}

但是我认为应该有一个更好的方法。

相关问题