C# WinForms中每行字符数和每文本框行数
我正在尝试创建一个文本框,它的每行字符数有一个限制,如果达到这个限制,就会创建新行。现在,我正试图在SelectionStartin键上抢夺,并确定用户是否处于下一行的位置,然后我将他移动到下一行,直到他达到某一行限制 这方面的逻辑令人惊讶地复杂。我必须看看这行的最后一件事是否是单词,最后是否没有分隔符。我需要移动到下一行并与下一行合并,检查下一行是否太长,等等。所有这些都不太好用,这并不奇怪。再加上太多的字符串操作,甚至使用StringBuilder都能达到我想要的速度C# WinForms中每行字符数和每文本框行数,c#,.net,winforms,C#,.net,Winforms,我正在尝试创建一个文本框,它的每行字符数有一个限制,如果达到这个限制,就会创建新行。现在,我正试图在SelectionStartin键上抢夺,并确定用户是否处于下一行的位置,然后我将他移动到下一行,直到他达到某一行限制 这方面的逻辑令人惊讶地复杂。我必须看看这行的最后一件事是否是单词,最后是否没有分隔符。我需要移动到下一行并与下一行合并,检查下一行是否太长,等等。所有这些都不太好用,这并不奇怪。再加上太多的字符串操作,甚至使用StringBuilder都能达到我想要的速度 有没有更简单的方法来做
有没有更简单的方法来做这样的事情 如果视觉效果不重要,可以允许自由输入字符串。保存时,您可以在循环中使用substring方法来获得所需的行长度,并根据需要插入“\n”您应该能够在文本框的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更改为您所需的每行最大长度。您只需要在显示屏上换行,还是需要使用换行符存储输入?如果只是为了显示,TextBox有一个WordWrap属性,它可以满足您的需要。如果您需要使用换行符存储数据,则链接可能会有所帮助。是另一个可能有帮助的。我需要在.Text中使用换行符来存储。谢谢你的回复,我会查一查。你可以看看这篇文章,可能会有类似问题的答案