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();
}
}
}
}
PrintDocument打印、预览、打印机设置和打印属性的方法(较完整) .的更多相关文章
- .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现
原文:.NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是 ...
- 网站开发进阶(十二)JS实现打印功能(包括打印预览、打印设置等)
JS实现打印功能(包括打印预览.打印设置等) 绪 最近在进行项目开发时,需要实现后台管理端打印功能,遂在网上一阵搜索,搜到了很多相关的文章.其中绝大部分文章都是使用的Lodop5.0(Web打印和套打 ...
- 怎么在MindManager中查看打印预览
在MindManager2016思维导图中打印导图之前,可以先进行预览,MindManager和其他很多应用程序一样都带有打印预览功能,该功能提供了再次检查的机会,避免打印出错,MindManager ...
- 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 ...
- C# 使用PrintDocument 绘制表格 完成 打印预览
C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable 经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代 ...
- C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable
经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代码及来源见最后(其中一份是VB语言的) 其中遇到的一些问题也已经得到了解决(分页,打印预 ...
- 【转】C#使用PrintDocument打印 多页 打印预览
PrintDocument实例所有的订阅事件如下: 创建一个PrintDocument的实例.如下: System.Drawing.Printing.PrintDocument docToPrint ...
- C#使用PrintDocument打印 多页 打印预览
PrintDocument实例所有的订阅事件如下: 创建一个PrintDocument的实例.如下: System.Drawing.Printing.PrintDocument docToPrint ...
随机推荐
- vue 子页面,向父页面 传值...
子组件 通过 事件 向父组件传值..... 父组件 方法: methods: { appendData: function (list) { console.log(list); for (var i ...
- Linux 安装 python3
1. 安装依赖环境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline- ...
- 在python3.5中pip安装scrapy,遇到 error: Microsoft Visual C++ 14.0 is required
本来在python3.5中安装scrapy一路顺畅(pip install scrapy),中间遇到一个 error: Microsoft Visual C++ 14.0 is required. x ...
- centeros下安装python3
一.查看python版本及安装python3 1. which python 可以看到预装的是2.7版本 2.安装依赖包 yum -y groupinstall "Development t ...
- Ionic3,安装,创建项目(一)
Ionic3 简介:是一款html5的轻量级手机开发框架,基于angularjs.scss语法,ionic是一个轻量的手机UI库.并直接放弃了IOS 6和Android 4.1一下的版本支持. 安装: ...
- 爬虫beautifulsoup实践
爬虫beautifulsoup实践: 目的:在https://unsplash.com/上爬取图片并保存到本地文件夹里. 一.观察response.首先,在Chrome浏览器里观察一下该网页的re ...
- Docker镜像命名解析
镜像是Docker最核心的技术之一,也是应用发布的标准格式. 无论你是用docker pull image,或者是在Dockerfile里面写FROM image, 从Docker官方Registry ...
- TOJ 4523 Transportation
Description Given N stations, you want to carry goods from station 1 to station N. Among these stati ...
- 在Unity中创建攻击Slot系统
http://www.manew.com/thread-109310-1-1.html 马上注册,结交更多好友,享用更多功能,让你轻松玩转社区. 您需要 登录 才可以下载或查看,没有帐号?注册帐号 ...
- 九度oj题目1165:字符串匹配
题目1165:字符串匹配 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3078 解决:1079 题目描述: 读入数据string[ ],然后读入一个短字符串.要求查找string[ ]中 ...