C# 中printDocument打印、预览、打印机设置和打印属性的方法
private void Form1_Load(object sender, System.EventArgs e)
{
//获取或设置一个值,该值指示是否发送到文件或端口
printDocument1.PrinterSettings.PrintToFile = true;
//设置打印时横向还是纵向
printDocument1.DefaultPageSettings.Landscape = true;
}
private void fileOpenMenuItem_Click(object sender, System.EventArgs e)
{
OpenFile();
}
private void OpenFile()
{
openFileDialog1.Filter = "Text Files (*.txt)|*.txt";//打开文本的类型
//获取文件对话框的初始目录(StartupPath)获得bin文件下的文件
openFileDialog1.InitialDirectory = System.Windows.Forms.Application.StartupPath;
DialogResult userResponse = openFileDialog1.ShowDialog();
//MessageBox.Show(userResponse.ToString());
if (userResponse==DialogResult.OK)
{
filePath = openFileDialog1.FileName.ToString();//转换文件路径
}
}
private void MyPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) //充分利用e {
int topMargin = printDocument1.DefaultPageSettings.Margins.Top;//上边距
int leftMargin = printDocument1.DefaultPageSettings.Margins.Left;//左边距
float linesPerPage = 0;//页面行号
float verticalPosition = 0;//绘制字符串的纵向位置
float horizontalPosition=leftMargin;//左边距
string textLine = null;//行字符串
currentLine = 0;//行计数器
// float Xline=0;
//int line=0;
// Calculate the number of lines per page.
linesPerPage = e.MarginBounds.Height / myFont.GetHeight(e.Graphics);
// Xline=e.MarginBounds.Width/myFont.GetHeight();
// for each text line that will fit on the page, read a new line from the document
while (currentLine < linesPerPage )
{
textLine = streamToPrint.ReadLine();
if(textLine == null) { break;
}
// 求出已经打印的范围
verticalPosition = topMargin + currentLine * myFont.GetHeight(e.Graphics);
// 设置页面的属性
e.Graphics.DrawString(textLine, myFont, myBrush, horizontalPosition, verticalPosition);
// 增加行数
currentLine ++;
}
// If more lines of text exist in the file, print another page.
if (textLine != null)
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
}
}
private void printPreviewButton_Click(object sender, System.EventArgs e)
{
try
{
streamToPrint = new StreamReader(filePath);
try
{
PrintPreview();
}
finally
{
streamToPrint.Close();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void runtimeDialogButton_Click(object sender, System.EventArgs e)
{
try
{
streamToPrint = new StreamReader(filePath);
try
{
RuntimeDialog();
}
finally
{
streamToPrint.Close();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void printPreviewControlButton_Click(object sender, System.EventArgs e)
{
try
{
streamToPrint = new StreamReader(filePath);
try
{
PrintPreviewControl();
}
finally
{
streamToPrint.Close();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void RuntimeDialog()
{
PrintPreviewDialog pPDlg;
pPDlg = new PrintPreviewDialog();
pPDlg.Document = pDoc;
pPDlg.WindowState = FormWindowState.Maximized;
pPDlg.PrintPreviewControl.Columns = 2;
pPDlg.ShowDialog();
pPDlg.Dispose();
}
private void PrintPreviewControl()
{
Form formPreview = new Form();
PrintPreviewControl previewControl = new PrintPreviewControl();
previewControl.Document = printDocument1;
previewControl.StartPage = 2;
formPreview.WindowState = FormWindowState.Maximized;
formPreview.Controls.Add(previewControl);
formPreview.Controls[0].Dock = DockStyle.Fill;
formPreview.ShowDialog();
formPreview.Dispose();
}
private void PrintPreview()
{
//设置页面的预览的页码
//设置显示页面显示的大小(也就是原页面的倍数)
printPreviewDialog1.PrintPreviewControl.StartPage = 0;
printPreviewDialog1.PrintPreviewControl.Zoom =1.0;
//设置或返回窗口状态,即该窗口是最小化、正常大小还是其他状态。
printPreviewDialog1.WindowState = FormWindowState.Maximized;
//设置和获取需要预览的文档
//将窗体显示为指定者的模式对话框
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.ShowDialog();
}
private void PrintDoc()
{
printDialog1.Document = printDocument1;
DialogResult userResPonse= printDialog1.ShowDialog();
if(userResPonse==DialogResult.OK)
{
printDocument1.Print();
}
}
//获取打印机的设置和打印的属性
private void button1_Click(object sender, System.EventArgs e)
{
try
{
streamToPrint=new StreamReader(filePath);
try
{
PrintDoc();
}
catch{}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
streamToPrint.Close();
}
}
}
}
C# 中printDocument打印、预览、打印机设置和打印属性的方法的更多相关文章
- .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现
原文:.NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是 ...
- 在TVideoGrabber中如何在预览时设置相机属性
在使用TVideoGrabber进行预览时,如何设置相机的属性呢?比如曝光.对比度.亮度等. 下面来看一下,如何通过编程来调整这些设置: ——通过指定VideoDevice属性(在VideoDevic ...
- 怎么在MindManager中查看打印预览
在MindManager2016思维导图中打印导图之前,可以先进行预览,MindManager和其他很多应用程序一样都带有打印预览功能,该功能提供了再次检查的机会,避免打印出错,MindManager ...
- 网站开发进阶(十二)JS实现打印功能(包括打印预览、打印设置等)
JS实现打印功能(包括打印预览.打印设置等) 绪 最近在进行项目开发时,需要实现后台管理端打印功能,遂在网上一阵搜索,搜到了很多相关的文章.其中绝大部分文章都是使用的Lodop5.0(Web打印和套打 ...
- JS实现浏览器打印、打印预览
1.JS实现打印的方式方式一:window.print()window.print();会弹出打印对话框,打印的是window.document.body.innerHTML中的内容,下面是从网上摘到 ...
- 怎样改动 VC6.0 4.0 2010 打印预览界面上的文字
前言:尽管早已下决心不再碰微软的东西,但手头的项目还得须要维护. 遇到问题还能解决. 问题由来: 之前的软件开发是基于中文环境开发的,建立项目的时候,选择了中文,为了方便客户使用.我们使用了静态编译的 ...
- PrintDocument打印、预览、打印机设置和打印属性的方法
WindowsForm 使用 PrintDocument打印.预览.打印机设置和打印属性的方法. private void Form1_Load(object sender, System.Event ...
- 1.关于QT中的Graphics绘图,定时器,动画,将窗口中的内容打印到图片上,打印机,打印预览
1 新建项目 A 修改pro中的内容如下: HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets prints ...
- C# 使用PrintDocument 绘制表格 完成 打印预览
C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable 经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代 ...
- C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable
经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代码及来源见最后(其中一份是VB语言的) 其中遇到的一些问题也已经得到了解决(分页,打印预 ...
随机推荐
- json对象与json字符串的区别
最近糟了这个坑,同一个方法,android和ios返回的数据不一样,一个是json字符串,另一个是json对象(至于为什么后台返回的是json对象,还没找到原因,但是我看到的后台的代码是有在返回之前给 ...
- ACdream原创群赛__15
这场感觉题目确实还算可以,不过,说好的每题10s效果上却不理想.这个时限还算比较紧.因为时间不是按绝对的多出几秒来计算,而是几倍来计算的. 比赛做的不好,后面又去做了一下. A:典型的数位DP,一直坑 ...
- Stack Overflow上关于Java Collections的几个常见问题
下面列出Stack Overflow上最常见的几个关于Java Collections的问题并给出答案. 1. 什么时候用LinkedList,什么时候用ArrayList? ArrayList是使用 ...
- Gauss Prime UVA - 1415
题意:给出a和b判定是否为高斯素数 解析: 普通的高斯整数i = sqrt(-1) 高斯整数是素数当且仅当: a.b中有一个是零,另一个是形为或其相反数的素数: 或a.b均不为零,而为素数. 这题 提 ...
- Linux nc命令用法收集
ps.ubuntu自带的nc是netcat-openbsd版,不带-c/-e参数. pss.在线Markdown编辑器的bug是怎么回事...“#”号依然显示着 ##参数 想要连接到某处: nc [- ...
- BZOJ 2157: 旅游
2157: 旅游 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1347 Solved: 619[Submit][Status][Discuss] ...
- 【BZOJ2830/洛谷3830】随机树(动态规划)
[BZOJ2830/洛谷3830]随机树(动态规划) 题面 洛谷 题解 先考虑第一问. 第一问的答案显然就是所有情况下所有点的深度的平均数. 考虑新加入的两个点,一定会删去某个叶子,然后新加入两个深度 ...
- harbor的日常管理
有情提示:docker-compose需要在 docker-compose.yml 存放的目录下执行. 1.Stopping Harbor: #docker-compose stop Stopping ...
- 单点登录(十二)-----遇到问题-----cas启用mongodb验证方式登录后没反应-pac4j-mongo包中的MongoAuthenticatInvocationTargetException
cas启用mongodb验证方式登录后没反应 控制台输出 2017-02-09 20:27:15,766 INFO [org.jasig.cas.authentication.MongoAuthent ...
- c/c++基本数据类型转换
If either operand is of type long double, the other operand is converted to type long double. If the ...