Sha*_*500 6 .net c# vb.net printing winforms
我正在尝试进行换页并在打印时跳过1页,但是使用下面的代码行,我无法进行换页.
private void InserPageBreak(System.Drawing.Printing.PrintPageEventArgs e)
{
Font sFont = new Font("Arial", 10);
Brush sBrush = Brushes.White;
e.Graphics.DrawString("\f", sFont, sBrush, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)
我使用PrintDialog打印页面内容.我正在使用"\ f"C#的换页符.
关于如何实现/使这个表单生成工作的任何想法?
PS:我甚至试过这个:
// ASCII代码12 - 打印机的换页控制代码.
string test = char.ConvertFromUtf32(12);
e.Graphics.DrawString(test, sFont, sBrush, 0, 0);
Run Code Online (Sandbox Code Playgroud)
内部c#将其转换为"\ f",但没有执行换页,任何已实现"\ f"的人,请分享您的想法.
在.NET中,应使用PrintPageEventArgs.HasMorePage属性将表单订阅源发送到打印机.通过调用e.Graphics.DrawString("\ f",sFont,sBrush,0,0),您只需将文本呈现给要打印的文档,打印机永远不会将其解释为换页.
由于您知道要中断页面的位置,而不是调用InserPageBreak方法,因此请在PrintPage事件处理程序中设置PrintPageEventArgs.HasMorePages = true.这将向打印机发送换页,您的PrintPage事件将继续被触发,直到您设置HasMorePages = false.
我希望这有帮助.查看如何实现PrintPage事件处理程序可能很有用.
例:
使用BeginPrint处理程序在打印前初始化数据
void _document_BeginPrint(object sender, PrintEventArgs e)
{
//generate some dummy strings to print
_pageData = new List<string>()
{
"Page 1 Data",
"Page 2 Data",
"Page 3 Data",
};
// get enumerator for dummy strings
_pageEnumerator = _pageData.GetEnumerator();
//position to first string to print (i.e. first page)
_pageEnumerator.MoveNext();
}
Run Code Online (Sandbox Code Playgroud)
在PrintPage处理程序中,一次打印一个页面,并设置HasMorePages以指示是否还有另一个要打印的页面.在此示例中,将打印三个页面,每页一个字符串.在第3页之后,_pageEnumerator.MoveNext()将返回false,结束打印作业.
void _document_PrintPage(object sender, PrintPageEventArgs e)
{
Font sFont = new Font("Arial", 10);
Brush sBrush = Brushes.Black;
//print current page
e.Graphics.DrawString(_pageEnumerator.Current, sFont, sBrush, 10, 10);
// advance enumerator to determine if we have more pages.
e.HasMorePages = _pageEnumerator.MoveNext();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6541 次 |
| 最近记录: |