代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

您现在的位置是:首页>_C#

怎么获得打印机所在路径

发布时间:2019-08-17浏览(1231)

    如何获得打印机所在路径
    asp.net   中,如何获得打印机所在路径


    ------解决方案--------------------
    开源:.NET环境下有关打印页面设置、打印机设置、打印预览对话框的应用

    前篇说了.NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现,现在到了我们应用它们的时候了。
      
    我们需要做下面的一些事情:
    1、将上篇中写的程序输出类型改为类库并编译成PrinterPageSetting.dll;
    2、建立C#或VB.net项目,并在项目的引用处添加引用,在弹出的对话框的.NET标签中浏览并选择PrinterPageSetting.dll;
    3、在默认窗口Form1上增加一个TextBox文本框控件,默认名TextBox1(实际项目中建议采用命名及编码规范,如frmTestPrint,txtPrint)
    4、从工具箱中拖一个MainMenu到窗口Form1,创建mainMenu1菜单对象,建立主菜单menuFile
    5、单击menuFile,在其下方输入处分别建立menuFilePageSetup、menuFilePrintPreview、menuFilePrint菜单。我想大家明白这几个菜单的意义了,这是命名规范最基本的。

    准备工作做完了,看看我们怎么使用PrinterPageSetting轻松完成打印页面设置、打印机设置、打印预览对话框。

    第一步:在窗口类中申明并实例化PrinterPageSetting,当然实例化对象可以放在构造函数中。
    C#:
    private GoldPrinter.PrinterPageSetting printerPageSetting = new GoldPrinter.PrinterPageSetting();
    VB.net:
    Private printerPageSetting As New GoldPrinter.PrinterPageSetting

    第二步:写一个实现打印的具体过程
    C#:
    private void PrintDocument_PrintPage_Handler(object o,System.Drawing.Printing.PrintPageEventArgs e)
    {
    System.Drawing.Graphics g = e.Graphics;
    if (Draw(g))
    {
    e.HasMorePages = true; //要分页打印
    }
    else
    {
    e.HasMorePages = false; //打印结束
    }
    }

    VB.net:
    Private Sub printDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
    Dim g As System.Drawing.Graphics = e.Graphics
    If Me.Draw(g) Then
    e.HasMorePages = True ´要分页打印
    Else
    e.HasMorePages = False ´打印结束
    End If
    End Sub

    大家可以看到我们是怎么使程序在打印时自动分页的,就是设置HasMorePages属性为真就可以了。为了清晰可见,我将真正打印的具体过程独立出来用Draw()实现。
    在第二步中我们实现打印的具体过程,在PrinterPageSetting类中,我们并不知道打印的具体实现,就设计了PrintPage委托,让调用者自己实现,然后告诉PrinterPageSetting是用哪一个方法实现,也就是第三步了。

    第三步:打印委托
    在窗口空白处双击,在Form1_Load事件中输入相关语句。当然也可以放在构造函数中,这里为了描述的方便。
    C#:
    private void Form1_Load(object sender, System.EventArgs e)
    {
    this.printerPageSetting.PrintPage += new GoldPrinter.PrintPageDelegate(PrintDocument_PrintPage_Handler);
    }
      
    如果你不知上一句是什么意思,就用这一句吧:
    this.printerPageSetting.PrintPageValue = new GoldPrinter.PrintPageDelegate(PrintDocument_PrintPage_Handler);
    意思就是告诉printerPageSetting打印的具体实现过程是PrintDocument_PrintPage_Handler(第二步)
      
    VB.net:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.printerPageSetting.PrintPageValue = New GoldPrinter.PrintPageDelegate(AddressOf printDocument_PrintPage)
    End Sub

    大家还可以一试啊,
    Private WithEvents printDocument As System.Drawing.Printing.PrintDocument ´第一步:在申明窗口级变量
    Me.printDocument = Me.printerPageSetting.PrintDocument ´第二步:在此将两个量联系起来
    将printDocument_PrintPage(...)加上 Handles printDocument.PrintPage


    第四步:显示页面设置\打印机设置\打印预览对话框
    分别在几个菜单上单击,具体代码如下:

    C#:
    private void menuFilePageSetup_Click(object sender, System.EventArgs e)
    {
    this.printerPageSetting.ShowPageSetupDialog(); //显示页面设置对话框
    }

    private void menuFilePrintPreview_Click(object sender, System.EventArgs e)
    {
    this.printerPageSetting.ShowPrintPreviewDialog(); //显示打印预览对话框
    }

    private void menuFilePrint_Click(object sender, System.EventArgs e)
    {
    this.printerPageSetting.ShowPrintSetupDialog(); //显示打印预览对话框
    }

    VB.net:
    Private Sub menuFilePageSetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuFilePageSetup.Click
    Me.printerPageSetting.ShowPageSetupDialog()
    End Sub

    Private Sub menuFilePrintPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuFilePrintPreview.Click