如何使用PrintDialog进行打印 [英] How to print with PrintDialog

查看:187
本文介绍了如何使用PrintDialog进行打印的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码无法在打印机上打印DataGridView,但只能在Microsoft XPS文档中保存文件。

此外,DataGridViews总是不完整打印 - 即14个列中的8个或更少的列,在XPS Doc。



请协助编辑我的代码:

- 在打印机上打印或

- 通过PrintDialog打印和

- 完整打印DataGridViews
谢谢。

这些是我的代码:



MemoryStream memStream = new MemoryStream();

private void btnPrint_Click(object sender,EventArgs e)

{

if(cboPrinters.Items.Count< = 0)

{

if(PrinterSettings.InstalledPrinters == null)

{

MessageBox.Show(没有安装打印机);

}

其他

{

for每个(PrinterSettings.InstalledPrinters中的字符串打印机)

{

cboPrinters.Items.Add(打印机);

}

}

}

}



public void pd_PrintPage(object sender,PrintPageEventArgs e)

{

e.Graphics.DrawImage(Image.FromStream(memStream),100,100);

}



private void cboPrinters_SelectedIndexChanged(object sender,EventArgs e)

{

DataGridView dgv = DataGridView1;

Bitmap image = new Bitmap(dgv.Width,dgv.Height);

dgv.DrawToBitmap(image,new Rectangle(new Point(),dgv.Size));

image。保存(memStream,System.Drawing.Imaging.ImageFormat.Bmp);



PrintDocument p = new PrintDocument();

p.PrinterSettings.PrinterName = cboPrinters.SelectedItem.ToString();

p.PrintPage + = new PrintPageEventHandler(pd_PrintPage);

p.Print();



cboPrinters.Items.Clear();

cboPrinters.Visible = false;

}

My codes can not print DataGridView on a printer but can only save files in Microsoft XPS Document.
Also, DataGridViews are always not printed in full - i.e. about 8 or less columns out of 14, on the XPS Doc.

Please assist in editing my codes to:
- Print on printers or
- Print via PrintDialog and
- Print DataGridViews in full
Thank you.
These are my codes:

MemoryStream memStream = new MemoryStream();
private void btnPrint_Click(object sender, EventArgs e)
{
if (cboPrinters.Items.Count <= 0)
{
if (PrinterSettings.InstalledPrinters == null)
{
MessageBox.Show("No Printer Installed");
}
else
{
foreach (string printer in PrinterSettings.InstalledPrinters)
{
cboPrinters.Items.Add(printer);
}
}
}
}

public void pd_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawImage(Image.FromStream(memStream), 100, 100);
}

private void cboPrinters_SelectedIndexChanged(object sender, EventArgs e)
{
DataGridView dgv = DataGridView1;
Bitmap image = new Bitmap(dgv.Width, dgv.Height);
dgv.DrawToBitmap(image, new Rectangle(new Point(), dgv.Size));
image.Save(memStream, System.Drawing.Imaging.ImageFormat.Bmp);

PrintDocument p = new PrintDocument();
p.PrinterSettings.PrinterName = cboPrinters.SelectedItem.ToString();
p.PrintPage += new PrintPageEventHandler(pd_PrintPage);
p.Print();

cboPrinters.Items.Clear();
cboPrinters.Visible = false;
}

推荐答案

寻求,你们会发现 [ ^ ]。


这篇关于如何使用PrintDialog进行打印的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆