C# 如何在窗口中文本换行的地方插入硬换行符?

C# 如何在窗口中文本换行的地方插入硬换行符?,c#,windows,C#,Windows,这个问题始于有人想要将Word文档中每一行明显的“文本”导入Excel工作表中的一行,但我确信,如果没有一些改进,这是不可能的 我想在显示在窗口中的字符串被换行到新行的每一点上插入一个换行符(无论配置为什么)。我该怎么做?我想我需要查询窗口并获取其文本行数组,然后计算每行中的字符数,并在原始字符串中,在该行显示的字符数后插入一个换行符 我当然意识到,更改窗口大小将使我正在询问如何编写的代码的所有工作无效,但这不是一个相关的问题 有用信息: 我已经找到了解决原来,Word到Excel导出,问题的方

这个问题始于有人想要将Word文档中每一行明显的“文本”导入Excel工作表中的一行,但我确信,如果没有一些改进,这是不可能的

我想在显示在窗口中的字符串被换行到新行的每一点上插入一个换行符(无论配置为什么)。我该怎么做?我想我需要查询窗口并获取其文本行数组,然后计算每行中的字符数,并在原始字符串中,在该行显示的字符数后插入一个换行符

我当然意识到,更改窗口大小将使我正在询问如何编写的代码的所有工作无效,但这不是一个相关的问题

有用信息:
我已经找到了解决原来,Word到Excel导出,问题的方法。将Word文档另存为文本文件时,在“保存”对话框上单击“保存”后,系统将为您提供另一个带有插入换行符选项的对话框。

您可以获取显示控件的宽度及其使用的字体,然后使用以获取一个可用于查找每个字符宽度的文本。这非常复杂,因为它考虑了所有不同的角色配置文件

一种更简单的方法是使用,给定字符串和字体属性,将返回其宽度(以像素为单位)。因此,您可以粗略估计换行符的位置,在该子字符串上调用此函数,并在
GetTextExtentPoint32
的结果刚好小于文本控件的宽度时插入换行符


干杯。

你能做的就是这样:

int width = txtBox.width;
Graphics g = CreateGraphics();

SizeF size = g.MeasureString(myText, txtBox.Font);

if (size.Width > width)
{
    int i = 0;
    List<string> lines = new List<String>();
    string str = "";
    while (i<myText.Length)
    {

        str = str + myText.SubString(i,1);
        int w = (int)(g.MeasureString(str, txtBox.Font).Width);
        while (w<width && i<myText.Length)
        {
             i++;
             str = str + myText.SubString(i,1);
        }
        str = str + '\n';
    }

    // str now contains your newline formatted string
    return str;
}
return myText;
int-width=txtBox.width;
Graphics g=CreateGraphics();
SizeF size=g.MeasureString(myText,txtBox.Font);
如果(size.Width>Width)
{
int i=0;
列表行=新列表();
字符串str=“”;

当(i@MahmoudAl-我什么都不知道。我完全不知道从哪里开始,这对我来说是一个低优先级,所以我选择了“先问”选项。