-1

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

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

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

有用的信息: 我找到了原始 Word 到 Excel 导出问题的解决方案。当您将 Word 文档另存为文本文件时,在“保存”对话框中单击“保存”,您将看到另一个对话框,其中包含插入换行符的选项。

4

2 回答 2

0

您可以做的是获取显示控件的宽度和它正在使用的字体,然后用于GetTextMetrics获取可用于找出每个字符宽度的TEXTMETRIC结构。这是非常复杂的,因为它考虑了所有不同的角色配置文件。

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

干杯。

于 2012-05-06T19:18:37.203 回答
0

你可以做的是这样的:

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;
于 2012-05-06T19:41:25.087 回答