我有TextBox
我需要显示一些文字。文本的长度是动态的,因此需要将其包装以适合多行。
一行的最大长度为50个字符。如果文字不止于此,我需要添加换行符\n
。
例如,如果文本是165个字符:
\n
\n
\n
所以最后文本的总长度将是168个字符。
我知道如何使用循环执行此操作。但我的问题是,这可以在没有太多代码的情况下完成吗? String类是否有提供该函数的方法?
这是一个Windows窗体应用程序,但包括TextBox
在内的所有控件都是以编程方式创建的。
答案 0 :(得分:3)
您可以使用WordWrap属性,将其设置为true。
您可以在代码中执行此操作:
myTextBox.WordWrap = true;
myTextBox.Multiline = true;
选择文本框,然后按 F4 。搜索WordWrap,并将其设置为true。
另外,不要忘记将TextBox设置为多行
@Don因为您说使用WordWrap不适合您,您可以尝试使用正则表达式,如下面的代码:
using System.Linq;
using System.Text.RegularExpressions;
private void Form1_Load(object sender, EventArgs e)
{
var textBox = new TextBox
{
Multiline = true,
WordWrap = false,
Width = 295,
Height = 100,
ReadOnly = true
};
var textFromDatabase = "1234567890 1234567890 1234567890 1234567890 111150dasdasds1234567890 1234567890 1234567890 1234567890 111150dasdasds1234567890 1234567890 1234567890 1234567890 1111";
var strings = Regex.Matches(textFromDatabase, ".{0,50}");
var lines = strings.Cast<Match>()
.Select(m => m.Value)
.Where(m => !string.IsNullOrWhiteSpace(m));
var @join = string.Join(Environment.NewLine, lines);
textBox.Text = @join;
Controls.Add(textBox);
}
请注意,我正在创建一个WordWrap为false且Multiline = true的TextBox。