如何使用PrintDialog进行打印 [英] How to print with 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屋!