WinForms 中每行的字符数和每个文本框的行数

本文关键字:文本 字符 WinForms | 更新日期: 2023-09-27 18:34:25

我正在尝试创建一个文本框,该文本框每行的字符数限制,如果达到此限制,则创建新行。现在我正试图在KeyUp SelectionStart抢劫并确定用户是否在他应该去下一行的位置,然后我只是将他移动到下一行,直到他达到一定的行限制。

这样做的逻辑出奇地复杂。我必须查看该行中的最后一件事是否是单词并且没有分隔符,最后我需要移动到下一行并与下一行合并并检查下一行是否不太长,等等。所有这些都没有那么好,这并不奇怪。加上太多的字符串操作与我希望使用StringBuilder一样快.

有没有更简单的方法可以做这样的事情?

WinForms 中每行的字符数和每个文本框的行数

如果视觉效果不重要,可以允许自由输入字符串。在 Save 中,您可以在循环中使用 substring() 方法来获得所需的行长度,并根据需要插入 '''

您应该

能够在文本框的 keyup 事件中执行此操作:

string[] lines = textbox1.Text.Replace(Environment.Newline, "'n").Split(''n');
if (lines.Count > 10)
{
    // More than 10 lines. Show an error or something
    e.Handled = true;
    e.SuppressKeyPress = true;
    return
}
if (lines.Any(z => z.Length > 100))
{
    // More then 100 character on a line. Do Something
    e.Handled = true;
    e.SuppressKeyPress = true;
    return;
}

当然,将10更改为您想要的行数,并100到您希望每行的最大长度。