我试图创建一个文本框,每行的字符数限制,如果达到此限制则创建新行。现在我试图在SelectionStart
中KeyUp
抢劫,并确定用户是否位于下一行的位置,然后我只是将他移到下一行直到他会达到一定的限额。
这方面的逻辑非常复杂。我必须看看我是否最后一行是word并且最后没有分隔符我需要移动到下一行并与下一行合并并检查下一行是否太长等等。所有这些都不是很好,这并不奇怪。另外,使用字符串的操作太多,我甚至想要使用StringBuilder
。
有没有更简单的方法来做这样的事情?
答案 0 :(得分:0)
如果视觉效果不重要,您可以允许自由输入字符串。在Save中,您可以在循环中使用substring()方法来实现所需的行长度并根据需要插入'\ n'
答案 1 :(得分:0)
您应该可以在文本框的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
更改为您希望每行的最大长度。