在以下需求:
在一个报表上,点击一个按钮出现一个radiobutton
"你要打A3呢,还是打A4",确定之后就把A3或者A4横打打出来了.我觉得这个很有难度:
总要选打印机吧?可能有多个打印机对吧?所以我觉得printdocument可能必不可少?
用默认的打印机?如果可以的话,怎么做?
在一个报表上,点击一个按钮出现一个radiobutton
"你要打A3呢,还是打A4",确定之后就把A3或者A4横打打出来了.我觉得这个很有难度:
总要选打印机吧?可能有多个打印机对吧?所以我觉得printdocument可能必不可少?
用默认的打印机?如果可以的话,怎么做?
解决方案 »
- 如何获得一组不相同的随机数
- winform窗口随Panel大小变化而变化问题
- [求助]:FTPRequest获取文件列表失败...(当文件数超过5000左右时才失败...)
- 问个简单的语句
- 我己把视频传到土豆网上了,已经链接到我想让他链接的地方,但我要如何提供下载呢?
- 有没有办法点击窗口的关闭图标时只是隐藏窗口
- 请教高人,如何使属性具有不同的访问控制?
- 为什么在asp.net下使用FileStream对象会报错而在控制台就不会
- WebForm问题!!如何在WebForm中链接(打开此页面的)客户的数据库!!
- 怎样得到局域网上Sql服务器名?并得其中的数据库列表。
- 关于继承的问题
- C# 如何修改浏览器安全级别
然后赋给PrintDocument对象的DefaultPageSettings.PaperSize属性
,这样可以达到自定义Page大小的目的。
如:
private System.Drawing.Printing.PrintDocument pd;
private StreamReader streamToPrint;
printFont = new Font("Arial", 10);
streamToPrint = new StreamReader ("PrintMe.Txt");
PaperSize pkCustomSize1 = new PaperSize("First custom size", 800,500);
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
pd.DefaultPageSettings.PaperSize =pkCustomSize1;//将自定义的Papersize赋给PrintDocument
pd.DefaultPageSettings.PaperSize.Height =500;//您可以修改pagesize的大小
pd.DefaultPageSettings
.PaperSize .Width =800;
有一种方法是自已写一个custom printdialog,但没找到相关代码.
不会弹出打印机的选择框.
问题同:http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/841c2e1c-5979-4e70-9bb7-d39670362079
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;
namespace PrintTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} PrintDocument objDocument;
DialogResult resultP;
FontDialog f = new FontDialog();
ColorDialog color = new ColorDialog(); private void button1_Click(object sender, EventArgs e)
{
//初始化打印机设置窗口
PrintDialog priD = new PrintDialog();
//设置当前页按钮为真
priD.AllowCurrentPage = true;
//是否显示帮助按钮
priD.ShowHelp = true;
//是否启用打印到文件按钮
priD.AllowPrintToFile = true;
//是否启用选择按钮
priD.AllowSelection = true;
//是否启用页选项按钮
priD.AllowSomePages = true;
resultP = priD.ShowDialog();
if (resultP == DialogResult.OK)
{
object[] obj = new object[]
{
//获取打印机是否支持双面打印
priD.PrinterSettings.CanDuplex,
//打印文档是否逐份打印
priD.PrinterSettings.Collate,
//获取打印机允许用户打印的最大份数
priD.PrinterSettings.MaximumCopies,
//获取打印文档的份数
priD.PrinterSettings.Copies,
//获取此打印机默认页设置
priD.PrinterSettings.DefaultPageSettings,
//获取双面打印的打印机设置
priD.PrinterSettings.Duplex,
//获取打印第一页的页码
priD.PrinterSettings.FromPage,
//获取该打印机支持的纸张大小
priD.PrinterSettings.PaperSizes,
//获取用户已指定要打印的页码
priD.PrinterSettings.PrintRange,
//获取要打印最后一页的页码
priD.PrinterSettings.ToPage
};
listBox1.Items.AddRange(obj);
} //初始化要显示的设置窗口
PageSetupDialog objPageSetupDialog = new PageSetupDialog();
objPageSetupDialog.PageSettings = new PageSettings();
objPageSetupDialog.ShowNetwork = false;
//获取文档
objPageSetupDialog.Document = this.objDocument;
//显示窗口
//objPageSetupDialog.ShowDialog();
resultP = objPageSetupDialog.ShowDialog();
if (resultP == DialogResult.OK)
{
object[] resultsP = new object[]{
//获取该页的边距
objPageSetupDialog.PageSettings.Margins,
//获取该页纸张的大小
objPageSetupDialog.PageSettings.PaperSize,
//获取是横向还是纵向打印True为横向
objPageSetupDialog.PageSettings.Landscape,
};
listBox1.Items.AddRange(resultsP);
} //初始化要预览窗口
PrintPreviewDialog ppvw = new PrintPreviewDialog();
//获取要预览的文档
ppvw.Document = objDocument;
ppvw.Width = 800;
ppvw.Height = 600;
//显示预览窗口
ppvw.ShowDialog();
} private void Form1_Load(object sender, EventArgs e)
{
objDocument = new PrintDocument();
//当需要为当前页打印的输出时发生
objDocument.PrintPage += new PrintPageEventHandler(objDocument_PrintPage);
} void objDocument_PrintPage(object sender, PrintPageEventArgs e)
{
string objString = this.textBox1.Text;
//获取用于绘制页面的Graphics的对象
Graphics g = e.Graphics;
//向页面输出一行文字
g.DrawString(objString, f.Font, new SolidBrush(color.Color), new RectangleF(0, 200, textBox1.Width, textBox1.Height));
g.DrawString(objString, f.Font, new SolidBrush(f.Color), new PointF(30,30));
//画一个矩形框
g.DrawRectangle(new Pen(color.Color,2),200,200,200,200);
//打印一张图
Image temp = Image.FromFile(@"D:\网络.png");
Rectangle destRect = new Rectangle(450, 300, temp.Width,temp.Height);
g.DrawImage(temp, destRect, 0, 0, temp.Width, temp.Height, System.Drawing.GraphicsUnit.Pixel);
} private void btncolor_Click(object sender, EventArgs e)
{
resultP = color.ShowDialog();
if (resultP == DialogResult.OK)
{
object[] obj1 = new object[]
{
color.Color
};
listBox1.Items.AddRange(obj1);
}
} private void btnFont_Click(object sender, EventArgs e)
{
//对话框中是否显示颜色选择
f.ShowColor = true;
resultP = f.ShowDialog();
if (resultP == DialogResult.OK)
{
object[] obj2 = new object[]
{
f.Font,
f.ShowColor
};
listBox1.Items.AddRange(obj2);
}
}
}
}
回帖者请看
http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/841c2e1c-5979-4e70-9bb7-d39670362079