WinForms 中每行的字符数和每个文本框的行数
本文关键字:文本 字符 WinForms | 更新日期: 2023-09-27 18:34:25
我正在尝试创建一个文本框,该文本框每行的字符数限制,如果达到此限制,则创建新行。现在我正试图在KeyUp
SelectionStart
抢劫并确定用户是否在他应该去下一行的位置,然后我只是将他移动到下一行,直到他达到一定的行限制。
这样做的逻辑出奇地复杂。我必须查看该行中的最后一件事是否是单词并且没有分隔符,最后我需要移动到下一行并与下一行合并并检查下一行是否不太长,等等。所有这些都没有那么好,这并不奇怪。加上太多的字符串操作与我希望使用StringBuilder
一样快.
有没有更简单的方法可以做这样的事情?
如果视觉效果不重要,可以允许自由输入字符串。在 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
到您希望每行的最大长度。