TextBox Word-Wrapping将字符串拆分为行

Ale*_*lek 4 c# string textbox word-wrap

这是我第一次在这个惊人的服务上发布问题,因为今天它只是通过阅读它帮助了我很多.

目前,我正在制作小型C#应用程序,我需要使用大量的TextBox.在TextBox属性中,我检查了MultiLineWord-Wrap函数.因此,当用户输入文本时,它会以多行显示.

我的问题是如何在字符串列表中显示那些显示在表单上的行,而不是一个大字符串.

我尚未区分天气Word-Wrap函数创建新行或在每行末尾添加"\n\r".我试图从TextBox.Lines获取行,但它只有TextBox.Lines [0],它包含整个字符串形式TextBox

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

Han*_*ant 6

这里有很多角落案例.您想要使用的核心方法是TextBox.GetFirstCharIndexFromLine(),允许您在TextBox应用WordWrap属性后迭代行.Boilerplate代码:

    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
    //... 
Run Code Online (Sandbox Code Playgroud)

要注意的是行结束包括在线.