C#:Multiline TextBox with TextBox.WordWrap显示长Base64字符串

我有一个文本框来显示一个很长的Base64字符串。 TextBox.Multline = trueTextBox.WordWrap = true

问题是由TextBox本身的自动字边界检测引起的。 Base64字符串的’+’是Base64编码的64个字符之一。 因此,TextBox会将其包装在’+’字符处,这不是我想要的(因为使用可能会认为’+’字符周围有换行符)。

我只想在TextBox中以Mulitline模式显示我的Base64字符串,但是没有字边界检测,也就是说,如果TextBox.Width只能包含80个字符,那么每行除了最后一行之外应该有80个字符。

智能包装太聪明,适合您的目的。 只需保持Multiline ,关闭WordWrap并自己包装文本:

 public IEnumerable 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; } 

更新:

使用固定宽度字体估计可容纳在TextBox的字符数为:

 public int GetMaxChars(TextBox tb) { using (var g = CreateGraphics()) { return (int)Math.Floor(tb.Width / (g.MeasureString("0123456789", tb.Font).Width / 10)); } } 

可变宽度字体更难,但可以使用MeasureCharacterRanges完成。