2

看看这个样本:

public partial class Form1 : Form
{
    private static string myString = null;

    private const int MAX_TEXT = 5460;

    public Form1()
    {
        InitializeComponent();

        StringBuilder builder = new StringBuilder();

        for (int i = 0; i < MAX_TEXT; i++)
        {
            builder.Append('a');
        }

        myString = builder.ToString();

        this.Paint += Form1_Paint;
    }

    void Form1_Paint(object sender, PaintEventArgs e)
    {
        TextRenderer.DrawText(
            e.Graphics,
            myString,
            this.Font,
            new Point(10, 30),
            Color.Black);
    }
}

当我将 设置MAX_TEXT为 5461 时,不绘制字符串。您知道本机机制是否对绘制文本有限制,是否/或我可以设置选项以使其正常工作?

4

1 回答 1

2

我认为您遇到了 TextRenderer 类的限制,我认为它在后台调用了 DrawTextEx API 函数。如果您尝试将builder.ToString()结果放入 TextBox,它也不会显示。

如果由于某种原因需要打印那么长的字符串,则必须恢复为 DrawString 方法:

e.Graphics.DrawString(myString, this.Font, Brushes.Black, new Point(10, 30));
于 2013-07-08T15:24:54.053 回答