多行TextBox与自定义自动换行

时间:2011-09-19 15:56:30

标签: c# winforms textbox ienumerable word-wrap

我开始使用.Net和C#进行编程,目前我被卡住了。我在stackoverflow上发布这个问题的问题非常类似:C#: Multiline TextBox with TextBox.WordWrap Displaying Long Base64 String

对这个问题的回答是这段代码:

public IEnumerable<string> SimpleWrap(string line, int length) 
{ 
   var s = line; 
   while (s.Length > length) 
   { 
     var result = s.Substring(0, length); 
     s = s.Substring(length); 
     yield return result; 
   } 
   yield return s; 
} 

我不知道如何使用那段代码。有人请给我一个代码片段,它使用这种特殊的方法来编写自动插入新行的文本。 我的代码目前看起来像这样:

var length = GetMaximumCharacters(txtBxResults);
var txtWrap = SimpleWrap(stringValue, length);
foreach (string s in txtWrap)
{
    txtBxResults.AppendText(s);
}

如果我使用AppendText方法,它会简单地将所有文本写入一行我不想要的内容。 任何回复将不胜感激。

谢谢, KK

2 个答案:

答案 0 :(得分:1)

你差不多正确,你只需要插入换行符。尝试

foreach (string s in txtWrap)
{
  txtBxResults.AppendText(s + Environment.NewLine);
}

答案 1 :(得分:0)

我现在不能给你确切的代码(我会回来稍后发布)但一般来说,你应该做的是识别下一个逗号的索引,如果是当前行上的字符+那个索引&gt;然后该行的长度在该化合物之前附加一个新行。如果你在一个bucle中这样做,当它完成时它应该被正确格式化,也考虑到最后一个化合物将不会(我认为)最后一个逗号。