C# 文本框单词包装将字符串拆分为行

C# 文本框单词包装将字符串拆分为行,c#,string,textbox,word-wrap,C#,String,Textbox,Word Wrap,这是我第一次在这项令人惊叹的服务上发帖提问,从今天起,仅仅阅读它就帮了我很大的忙 目前,我正在制作一个小型的C#应用程序,在这里我需要使用很多文本框。 在文本框属性中,我选中了多行和换行函数。 因此,当用户输入文本时,它将正确地显示在多行中 我的问题是,我如何才能得到这些行,这些行显示在表单上,在字符串列表中,而不是一个大字符串中 我还没有区分weather自动换行功能在每行末尾添加新行或“\n\r”。 我试图从TextBox.lines中获取行,但它只有TextBox.lines[0],其中包

这是我第一次在这项令人惊叹的服务上发帖提问,从今天起,仅仅阅读它就帮了我很大的忙

目前,我正在制作一个小型的C#应用程序,在这里我需要使用很多文本框。 在文本框属性中,我选中了多行换行函数。 因此,当用户输入文本时,它将正确地显示在多行中

我的问题是,我如何才能得到这些行,这些行显示在表单上,在字符串列表中,而不是一个大字符串中

我还没有区分weather自动换行功能在每行末尾添加新行或“\n\r”。 我试图从TextBox.lines中获取行,但它只有TextBox.lines[0],其中包含整个字符串形式的TextBox


我已经尝试了很多方法,研究了很多资源,但我仍然没有找到解决这个问题的正确方法。

您可以拉出单个
字符串,然后对它执行任何操作

根据分隔符将字符串拆分为字符串列表非常简单:


这里有很多角落的箱子。您想要使用的核心方法是
TextBox.GetFirstCharIndexFromLine()
,它允许您在TextBox应用WordWrap属性后迭代这些行。样板代码:

    var lines = new List<string>();
    for (int line = 0; ;line++) {
        var start = textBox1.GetFirstCharIndexFromLine(line);
        if (start < 0) break;
        var end = textBox1.GetFirstCharIndexFromLine(line + 1);
        if (end == -1 || start == end) end = textBox1.Text.Length;
        lines.Add(textBox1.Text.Substring(start, end - start));
    }
    // Do something with lines
    //... 
var行=新列表();
对于(int line=0;line++){
var start=textBox1.GetFirstCharIndexFromLine(行);
如果(开始<0)中断;
var end=textBox1.GetFirstCharIndexFromLine(行+1);
如果(end==1 | | start==end)end=textBox1.Text.Length;
添加(textBox1.Text.Substring(start,end-start));
}
//用线条做点什么
//... 

请注意,行尾包含在行中

可以直接获取行数并构建行数组。这包括由WordWrap生成的行

// Get the line count then loop and populate array
int lineCount = textBox1.GetLineFromCharIndex(textBox1.Text.Length) + 1;

// Build array of lines
string[] lines = new string[lineCount];
for (int i = 0; i < lineCount; i++)
{
    int start = textBox1.GetFirstCharIndexFromLine(i);
    int end = i < lineCount - 1 ? 
        textBox1.GetFirstCharIndexFromLine(i + 1) :
        textBox1.Text.Length;                            
    lines[i] = textBox1.Text.Substring(start, end - start);
}
//获取行计数,然后循环并填充数组
int lineCount=textBox1.GetLineFromCharIndex(textBox1.Text.Length)+1;
//构建行数组
string[]lines=新字符串[lineCount];
对于(int i=0;i
欢迎来到堆栈溢出。这是一个很好的第一个问题。我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。