gpt4 book ai didi

C#:带有 TextBox.WordWrap 显示长 Base64 字符串的多行 TextBox

转载 作者:太空狗 更新时间:2023-10-29 17:58:40 28 4
gpt4 key购买 nike

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

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

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

最佳答案

智能包装对于您的目的来说太智能了。只需保留 Multiline,关闭 WordWrap 并自行换行:

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

更新:

对于使用固定宽度字体的 TextBox 可以容纳的字符数的估计是:

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

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

关于C#:带有 TextBox.WordWrap 显示长 Base64 字符串的多行 TextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4576457/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com