看看这个样本:
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时,不会绘制字符串。你知道原生机制是否有限制绘制文本,如果/或我可以设置选项让它工作?
答案 0 :(得分:2)
我认为你遇到了TextRenderer类的限制,我认为它正在调用DrawTextEx API函数。如果您尝试将builder.ToString()
结果放入TextBox,它也不会显示。
如果由于某种原因你需要打印一个很长的字符串,你将不得不恢复到DrawString方法:
e.Graphics.DrawString(myString, this.Font, Brushes.Black, new Point(10, 30));