C# winform重写打印预览窗口

控件样式:
在这里插入图片描述
先识别本机打印机:

//显示打印设备
List<KeyValuePair<string, string>> PrintS = new List<KeyValuePair<string, string>>();
int index = 0;
foreach (string sPrint in PrinterSettings.InstalledPrinters)//获取所有打印机名称
{
    PrintS.Add(new KeyValuePair<string, string>(index.ToString(), sPrint));
    index++;
}
ucCombox1.Source = PrintS;
ucCombox1.SelectedIndex = 0;

打印预览部分写在了set里:

private Bitmap ownBitmap;
public Bitmap bitmap
{
    get
    {
        return ownBitmap;
    }
    set
    {
        ownBitmap = value;
        pictureBox1.Image = value;
    }
}

显示完毕,点击按钮打印:
先在构造函数里注册一个打印之前的方法,处理图像:

this.docToPrint.PrintPage += new PrintPageEventHandler(docToPrint_PrintPage);

docToPrint是定义的一个打印文档:

private System.Drawing.Printing.PrintDocument docToPrint = new System.Drawing.Printing.PrintDocument();

printPage事件:

private void docToPrint_PrintPage(object o, System.Drawing.Printing.PrintPageEventArgs e)
{
      Rectangle rectangle = new Rectangle(0, 0, ownBitmap.Width, ownBitmap.Height);
      e.Graphics.DrawImage(ownBitmap, rectangle);
 }

打印的时候直接调:

docToPrint.Print();

对打印设备的识别:
引用:

using System.Management

获取:

string path = @"win32_printer.DeviceId='" + ucCombox1.SelectedText + "'";
ManagementObject printer = new ManagementObject(path);
printer.Get();

获取属性:

printer["WorkOffline"].ToString()

遍历所有的属性:

foreach (var property in temp.Properties)
{
    sw.WriteLine(property.Name + ":" + property.Value);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值