求助,
打印预览中 添加打印当前页如果还能添加打印某页至某页,更好,
求代码,谢谢
打印预览中 添加打印当前页如果还能添加打印某页至某页,更好,
求代码,谢谢
解决方案 »
- 求助,自己弄了个浏览器的程序,可是生成运行后,都会弹出威胁:修改注册表??
- 不同数据库之间数据的处理
- 大侠们,如何给combox里添加空置选项
- [C# WinForm]小窗口,大图片?
- 如何能使NumericUpDown控件没有边框的同时也可以设置他的高度?(在线等)
- 窗体最大化之后,查询数据库出错
- VC#做出来的程序怎么那么耗内存?
- c#连接sybase数据库的问题,请大侠帮偶看看是哪里出了问题? 谢谢,谢谢!
- 各位帮帮忙一个非常难的问题,解决了把全部家产分给大家,从这里引到我的问题处!
- Socket Receive的问题
- C# 接收拖放至窗体的文件路径
- 安装程序,如何在自定义操作中执行另外一个exe
PrintDocument.PrinterSettings.FromPage = 2;
PrintDocument.PrinterSettings.ToPage = 2;
private PrintDialog prndlg = new PrintDialog();
private PrintPreviewDialog preddlg = new PrintPreviewDialog();
……
private void tbyaidi(Graphics grfx, int k, PrintPageEventArgs ppea)
{ //画表分班名册
Rectangle rect = new Rectangle(mtm(13), mtm(top), mtm(265), mtm(bottom-top));
grfx.DrawRectangle(pen2, rect);
PointF[] point = new PointF[2];
point[0].X = mtm(80); point[0].Y = mtm(top);
……
}
private void pagehen()
{
PageSetupDialog psd = new PageSetupDialog();
psd.AllowPaper = true;//是否可选择页面大小和纸张来源。
psd.AllowOrientation = true;//属性定义用户是否可以选择纵向和横向打印方式。
prndoc.PrinterSettings.FromPage = 2;
prndoc.PrinterSettings.ToPage = 2;
psd.Document = this.prndoc;
psd.PageSettings.Landscape = true;//横向为True,纵向为False
}
public void printh()
{ //计算有几页
prpage = d;
this.prndoc = new PrintDocument();
this.prndoc.PrintPage += new PrintPageEventHandler(OnPrintPage);
this.prndoc.EndPrint += new PrintEventHandler(prndoc_EndPrint);//每次打印完成后要重置这两个变量,以备下次打印时使用
pagehen();
this.prndoc.Print();
}
public void preprinth()
{ //计算有几页
float a = (float)(sds1);
float b = 20.0f;
float c = a / b;
int d = (int)Math.Ceiling(c); prpage = d;
p2 = d;
pagehen();
this.preddlg = new PrintPreviewDialog();
this.prndoc.PrintPage += new PrintPageEventHandler(OnPrintPage);
this.prndoc.EndPrint += new PrintEventHandler(prndoc_EndPrint);//每次打印完成后要重置这两个变量,以备下次打印时使用
//prndoc.BeginPrint += new PrintEventHandler(printDocument1_BeginPrint);
preddlg.Width = 700;
preddlg.Height = 580;
preddlg.Left = 10;
preddlg.Top = 10;
this.preddlg.Document = prndoc;
preddlg.ShowDialog();
} void prndoc_EndPrint(object sender, PrintEventArgs e)
{
if (prpage > 1)
prpage -= 1;//每次打印完成后要重置这两个变量,以备下次打印时使用
else
prpage = p2;
p = 0;//每次打印完成后要重置这两个变量,以备下次打印时使用
xhao = 1;
}
/// 在表中填数据
private void prtword(Graphics grfx,int a)
{
PointF point = new PointF();
Font font2 = new Font("宋体", 12);
Pen pen = new Pen(Color.Black, 2);
string str = "";
Brush brush = Brushes.Black;
Int32 hx = 22;
Int32 h;
//当最后一页不满一页时,设置循环C次
int c = 20;
if (sds1 - (a + 1) * 20 < 0)
c = sds1 - a * 20;
for (int i = 0; i < c; i++)
{
h = Convert.ToInt32(i * 7.1 + 22.5+top);
point.Y = mtm(h);
point.X = mtm(hx-8);
grfx.DrawString(xhao.ToString(), font2, brush, point);//儿童名册序号
xhao++;
for (int k = 0; k < sds2 - 5; k++) //-4是因为后面几列在这个表中没有用了
{
str = sds[i+a*20, k];
point.X = mtm(hx);
grfx.DrawString(str, font2, brush, point);
……
}
hx = 22;
}
} private void fillcaption(Graphics grfx, int a, PrintPageEventArgs ppea)
{ string str ="";
point.X = mtm(15);
point.Y = mtm(top+6);
str = "序";
grfx.DrawString(str, font2, brush, point); point.X = mtm(15);
point.Y = mtm(top+14);
str = "号";
grfx.DrawString(str, font2, brush, point); point.X = mtm(26);
point.Y = mtm(top+8);
} private void OnPrintPage(object sender, PrintPageEventArgs ppea)
{
Graphics grfx = ppea.Graphics;
ppea.HasMorePages = false;
while (prpage >= 1)
{
tbyaidi(grfx, p, ppea);
fillcaption(grfx, p, ppea);
p++;
if (prpage == 1)
{
ppea.HasMorePages = false;
prpage--;
//return;
}
else if (prpage > 1)
{
ppea.HasMorePages = true;
prpage--;
return;
}
}
}
这是我写的一个类,我把数组传给这个类,打印,
我不知道prndoc.PrinterSettings.FromPage = 2;
prndoc.PrinterSettings.ToPage = 2;这两句应该放到哪里
请帮我看一下,代码有点长,如果能解决,我再多给点辛苦分哈,
谢谢先
如果要实现此功能,楼主不能使用,
而应该在一个FORM中用PrintPreviewControl配合ToolStrip自己做一个预览窗体
然后结合PrintDialog控件让用户设置打印范围之类的