int CurrentLine = 0;
int TotalLinesPerPage = 0;
int LineLength = 0;
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Brush b = Brushes.Black;
Font f = fontDialog1.Font;
TotalLinesPerPage = (int)(e.MarginBounds.Height / f.Height);
for (int i = 0; i < TotalLinesPerPage && CurrentLine < sf.Length; i++, CurrentLine++)
{
string s="";
LineLength = (int)e.Graphics.MeasureString(sf[CurrentLine], f).Width;//获取当前行的长度
for (int n = 0; n <= LineLength / e.MarginBounds.X; n++)
{
if (LineLength > e.MarginBounds.X)
{ s += sf[CurrentLine].Substring(n * e.MarginBounds.X, e.MarginBounds.X) + Environment.NewLine;//运行是这句报错:"索引和长度必须引用该字符串内的位置。\r\n参数名: length"
e.Graphics.DrawString(s, f, b, e.MarginBounds.X, e.MarginBounds.Y + i * f.Height);
CurrentLine++;
}//判断当前行长度是否超多内页宽度,若超出则另取一行 else
{
s += sf[CurrentLine].Substring(n * e.MarginBounds.X);
}
}
} if (CurrentLine == sf.Length)
e.HasMorePages = false;
else
e.HasMorePages = true;
}
求解如何修改使程序实现打印文档自动换行
int TotalLinesPerPage = 0;
int LineLength = 0;
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Brush b = Brushes.Black;
Font f = fontDialog1.Font;
TotalLinesPerPage = (int)(e.MarginBounds.Height / f.Height);
for (int i = 0; i < TotalLinesPerPage && CurrentLine < sf.Length; i++, CurrentLine++)
{
string s="";
LineLength = (int)e.Graphics.MeasureString(sf[CurrentLine], f).Width;//获取当前行的长度
for (int n = 0; n <= LineLength / e.MarginBounds.X; n++)
{
if (LineLength > e.MarginBounds.X)
{ s += sf[CurrentLine].Substring(n * e.MarginBounds.X, e.MarginBounds.X) + Environment.NewLine;//运行是这句报错:"索引和长度必须引用该字符串内的位置。\r\n参数名: length"
e.Graphics.DrawString(s, f, b, e.MarginBounds.X, e.MarginBounds.Y + i * f.Height);
CurrentLine++;
}//判断当前行长度是否超多内页宽度,若超出则另取一行 else
{
s += sf[CurrentLine].Substring(n * e.MarginBounds.X);
}
}
} if (CurrentLine == sf.Length)
e.HasMorePages = false;
else
e.HasMorePages = true;
}
求解如何修改使程序实现打印文档自动换行
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货