我想知道无论如何我都可以为RichTextBox中的一行设置最大字符数。我知道我可以为整个Box设置一般的MaxLength,但不能为行本身设置。
我认为唯一的解决方案,或者至少是一个可行的解决方案,是选择TextRange中的行,计算字符并检查它是否大于我手动设置的最大数量。然后,使用以下命令创建一个新行:
myRichTextBox.AppendText(Environment.NewLine);
并将插入位置设置为选择的结尾,类似于:
myRichTextBox.CaretPosition = myRichTextBox.Selection.End;
这是解决我问题的最佳方法,还是有更简单的方法呢?
答案 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;
}
}
但是我认为应该有一个更好的方法。