C#如何调用打印机属性对话框,并保存设置?
如题,请高手支招,感谢先。

解决方案 »

  1.   

    我也在找,这是我找的资料如下///:在C#中使用PrintDialog可以很方便的实现程序的打印功能。
    其步骤如下:
    创建一个PrintDialog的实例。如下:
    System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog (); 
    创建一个PrintDocument的实例.如下:
    System.Drawing.Printing.PrintDocument docToPrint = 
    new System.Drawing.Printing.PrintDocument(); 
    设置打印机开始打印的事件处理函数.函数原形如下:
    void docToPrint_PrintPage(object sender, 
    System.Drawing.Printing.PrintPageEventArgs e) 
    将事件处理函数添加到PrintDocument的PrintPage事件中。
    docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage); 
    设置PrintDocument的相关属性,如:
    PrintDialog1.AllowSomePages = true;PrintDialog1.ShowHelp = true; 
    把PrintDialog的Document属性设为上面配置好的PrintDocument的实例:
    PrintDialog1.Document = docToPrint; 
    调用PrintDialog的ShowDialog函数显示打印对话框:
    DialogResult result = PrintDialog1.ShowDialog(); 
    根据用户的选择,开始打印:
    if (result==DialogResult.OK)
    {
    docToPrint.Print();
    }
    例子如下:
    使用时先创建PrintService类的实例,然后调用void StartPrint(Stream streamToPrint,string streamType)函数开始打印。其中streamToPrint是要打印的内容(字节流),streamType是流的类型(txt表示普通文本,image表示图像);
    using System;
    using System.Drawing.Printing;
    using System.Windows.Forms;
    using System.IO;
    namespace EDImageSystem
    {
    /// <summary>
    /// PrintService 的摘要说明。
    /// </summary>
    public class PrintService
    {
    public PrintService()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    this.docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage);
    }//将事件处理函数添加到PrintDocument的PrintPage中
    // Declare the PrintDocument object.
    private System.Drawing.Printing.PrintDocument docToPrint = 
    new System.Drawing.Printing.PrintDocument();//创建一个PrintDocument的实例
    private System.IO.Stream streamToPrint;
    string streamType;
    // This method will set properties on the PrintDialog object and
    // then display the dialog.
    public void StartPrint(Stream streamToPrint,string streamType)
    {
    this.streamToPrint=streamToPrint;
    this.streamType=streamType;
    // Allow the user to choose the page range he or she would
    // like to print.
    System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog ();//创建一个PrintDialog的实例。
    PrintDialog1.AllowSomePages = true;
    // Show the help button.
    PrintDialog1.ShowHelp = true;
    // Set the Document property to the PrintDocument for 
    // which the PrintPage Event has been handled. To display the
    // dialog, either this property or the PrinterSettings property 
    // must be set 
    PrintDialog1.Document = docToPrint;//把PrintDialog的Document属性设为上面配置好的PrintDocument的实例
    DialogResult result = PrintDialog1.ShowDialog();//调用PrintDialog的ShowDialog函数显示打印对话框
    // If the result is OK then print the document.
    if (result==DialogResult.OK)
    {
    docToPrint.Print();//开始打印
    }
    }
    // The PrintDialog will print the document
    // by handling the document’s PrintPage event.
    private void docToPrint_PrintPage(object sender, 
    System.Drawing.Printing.PrintPageEventArgs e)//设置打印机开始打印的事件处理函数
    {
    // Insert code to render the page here.
    // This code will be called when the control is drawn.
    // The following code will render a simple
    // message on the printed document
    switch(this.streamType)
    {
    case "txt":
    string text = null;
    System.Drawing.Font printFont = new System.Drawing.Font
    ("Arial", 35, System.Drawing.FontStyle.Regular);
    // Draw the content.
    System.IO.StreamReader streamReader=new StreamReader(this.streamToPrint);
    text=streamReader.ReadToEnd();
    e.Graphics.DrawString(text,printFont,System.Drawing.Brushes.Black,e.MarginBounds.X,e.MarginBounds.Y);
    break;
    case "image":
    System.Drawing.Image image=System.Drawing.Image.FromStream(this.streamToPrint);
    int x=e.MarginBounds.X;
    int y=e.MarginBounds.Y;
    int width=image.Width;
    int height=image.Height;
    if((width/e.MarginBounds.Width)>(height/e.MarginBounds.Height))
    {
    width=e.MarginBounds.Width;
    height=image.Height*e.MarginBounds.Width/image.Width;
    }
    else
    {
    height=e.MarginBounds.Height;
    width=image.Width*e.MarginBounds.Height/image.Height;
    }
    System.Drawing.Rectangle destRect=new System.Drawing.Rectangle(x,y,width,height);
    e.Graphics.DrawImage(image,destRect,0,0,image.Width,image.Height,System.Drawing.GraphicsUnit.Pixel);
    break;
    default:
    break;
    }}
    }
    }
      

  2.   

    我也在找,这是我找的资料如下///:在C#中使用PrintDialog可以很方便的实现程序的打印功能。
    其步骤如下:
    创建一个PrintDialog的实例。如下:
    System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog (); 
    创建一个PrintDocument的实例.如下:
    System.Drawing.Printing.PrintDocument docToPrint = 
    new System.Drawing.Printing.PrintDocument(); 
    设置打印机开始打印的事件处理函数.函数原形如下:
    void docToPrint_PrintPage(object sender, 
    System.Drawing.Printing.PrintPageEventArgs e) 
    将事件处理函数添加到PrintDocument的PrintPage事件中。
    docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage); 
    设置PrintDocument的相关属性,如:
    PrintDialog1.AllowSomePages = true;PrintDialog1.ShowHelp = true; 
    把PrintDialog的Document属性设为上面配置好的PrintDocument的实例:
    PrintDialog1.Document = docToPrint; 
    调用PrintDialog的ShowDialog函数显示打印对话框:
    DialogResult result = PrintDialog1.ShowDialog(); 
    根据用户的选择,开始打印:
    if (result==DialogResult.OK)
    {
    docToPrint.Print();
    }
    例子如下:
    使用时先创建PrintService类的实例,然后调用void StartPrint(Stream streamToPrint,string streamType)函数开始打印。其中streamToPrint是要打印的内容(字节流),streamType是流的类型(txt表示普通文本,image表示图像);
    using System;
    using System.Drawing.Printing;
    using System.Windows.Forms;
    using System.IO;
    namespace EDImageSystem
    {
    /// <summary>
    /// PrintService 的摘要说明。
    /// </summary>
    public class PrintService
    {
    public PrintService()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    this.docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage);
    }//将事件处理函数添加到PrintDocument的PrintPage中
    // Declare the PrintDocument object.
    private System.Drawing.Printing.PrintDocument docToPrint = 
    new System.Drawing.Printing.PrintDocument();//创建一个PrintDocument的实例
    private System.IO.Stream streamToPrint;
    string streamType;
    // This method will set properties on the PrintDialog object and
    // then display the dialog.
    public void StartPrint(Stream streamToPrint,string streamType)
    {
    this.streamToPrint=streamToPrint;
    this.streamType=streamType;
    // Allow the user to choose the page range he or she would
    // like to print.
    System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog ();//创建一个PrintDialog的实例。
    PrintDialog1.AllowSomePages = true;
    // Show the help button.
    PrintDialog1.ShowHelp = true;
    // Set the Document property to the PrintDocument for 
    // which the PrintPage Event has been handled. To display the
    // dialog, either this property or the PrinterSettings property 
    // must be set 
    PrintDialog1.Document = docToPrint;//把PrintDialog的Document属性设为上面配置好的PrintDocument的实例
    DialogResult result = PrintDialog1.ShowDialog();//调用PrintDialog的ShowDialog函数显示打印对话框
    // If the result is OK then print the document.
    if (result==DialogResult.OK)
    {
    docToPrint.Print();//开始打印
    }
    }
    // The PrintDialog will print the document
    // by handling the document’s PrintPage event.
    private void docToPrint_PrintPage(object sender, 
    System.Drawing.Printing.PrintPageEventArgs e)//设置打印机开始打印的事件处理函数
    {
    // Insert code to render the page here.
    // This code will be called when the control is drawn.
    // The following code will render a simple
    // message on the printed document
    switch(this.streamType)
    {
    case "txt":
    string text = null;
    System.Drawing.Font printFont = new System.Drawing.Font
    ("Arial", 35, System.Drawing.FontStyle.Regular);
    // Draw the content.
    System.IO.StreamReader streamReader=new StreamReader(this.streamToPrint);
    text=streamReader.ReadToEnd();
    e.Graphics.DrawString(text,printFont,System.Drawing.Brushes.Black,e.MarginBounds.X,e.MarginBounds.Y);
    break;
    case "image":
    System.Drawing.Image image=System.Drawing.Image.FromStream(this.streamToPrint);
    int x=e.MarginBounds.X;
    int y=e.MarginBounds.Y;
    int width=image.Width;
    int height=image.Height;
    if((width/e.MarginBounds.Width)>(height/e.MarginBounds.Height))
    {
    width=e.MarginBounds.Width;
    height=image.Height*e.MarginBounds.Width/image.Width;
    }
    else
    {
    height=e.MarginBounds.Height;
    width=image.Width*e.MarginBounds.Height/image.Height;
    }
    System.Drawing.Rectangle destRect=new System.Drawing.Rectangle(x,y,width,height);
    e.Graphics.DrawImage(image,destRect,0,0,image.Width,image.Height,System.Drawing.GraphicsUnit.Pixel);
    break;
    default:
    break;
    }}
    }
    }
      

  3.   

    我也在找,这是我找的资料如下///:在C#中使用PrintDialog可以很方便的实现程序的打印功能。
    其步骤如下:
    创建一个PrintDialog的实例。如下:
    System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog (); 
    创建一个PrintDocument的实例.如下:
    System.Drawing.Printing.PrintDocument docToPrint = 
    new System.Drawing.Printing.PrintDocument(); 
    设置打印机开始打印的事件处理函数.函数原形如下:
    void docToPrint_PrintPage(object sender, 
    System.Drawing.Printing.PrintPageEventArgs e) 
    将事件处理函数添加到PrintDocument的PrintPage事件中。
    docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage); 
    设置PrintDocument的相关属性,如:
    PrintDialog1.AllowSomePages = true;PrintDialog1.ShowHelp = true; 
    把PrintDialog的Document属性设为上面配置好的PrintDocument的实例:
    PrintDialog1.Document = docToPrint; 
    调用PrintDialog的ShowDialog函数显示打印对话框:
    DialogResult result = PrintDialog1.ShowDialog(); 
    根据用户的选择,开始打印:
    if (result==DialogResult.OK)
    {
    docToPrint.Print();
    }
    例子如下:
    使用时先创建PrintService类的实例,然后调用void StartPrint(Stream streamToPrint,string streamType)函数开始打印。其中streamToPrint是要打印的内容(字节流),streamType是流的类型(txt表示普通文本,image表示图像);
    using System;
    using System.Drawing.Printing;
    using System.Windows.Forms;
    using System.IO;
    namespace EDImageSystem
    {
    /// <summary>
    /// PrintService 的摘要说明。
    /// </summary>
    public class PrintService
    {
    public PrintService()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    this.docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage);
    }//将事件处理函数添加到PrintDocument的PrintPage中
    // Declare the PrintDocument object.
    private System.Drawing.Printing.PrintDocument docToPrint = 
    new System.Drawing.Printing.PrintDocument();//创建一个PrintDocument的实例
    private System.IO.Stream streamToPrint;
    string streamType;
    // This method will set properties on the PrintDialog object and
    // then display the dialog.
    public void StartPrint(Stream streamToPrint,string streamType)
    {
    this.streamToPrint=streamToPrint;
    this.streamType=streamType;
    // Allow the user to choose the page range he or she would
    // like to print.
    System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog ();//创建一个PrintDialog的实例。
    PrintDialog1.AllowSomePages = true;
    // Show the help button.
    PrintDialog1.ShowHelp = true;
    // Set the Document property to the PrintDocument for 
    // which the PrintPage Event has been handled. To display the
    // dialog, either this property or the PrinterSettings property 
    // must be set 
    PrintDialog1.Document = docToPrint;//把PrintDialog的Document属性设为上面配置好的PrintDocument的实例
    DialogResult result = PrintDialog1.ShowDialog();//调用PrintDialog的ShowDialog函数显示打印对话框
    // If the result is OK then print the document.
    if (result==DialogResult.OK)
    {
    docToPrint.Print();//开始打印
    }
    }
    // The PrintDialog will print the document
    // by handling the document’s PrintPage event.
    private void docToPrint_PrintPage(object sender, 
    System.Drawing.Printing.PrintPageEventArgs e)//设置打印机开始打印的事件处理函数
    {
    // Insert code to render the page here.
    // This code will be called when the control is drawn.
    // The following code will render a simple
    // message on the printed document
    switch(this.streamType)
    {
    case "txt":
    string text = null;
    System.Drawing.Font printFont = new System.Drawing.Font
    ("Arial", 35, System.Drawing.FontStyle.Regular);
    // Draw the content.
    System.IO.StreamReader streamReader=new StreamReader(this.streamToPrint);
    text=streamReader.ReadToEnd();
    e.Graphics.DrawString(text,printFont,System.Drawing.Brushes.Black,e.MarginBounds.X,e.MarginBounds.Y);
    break;
    case "image":
    System.Drawing.Image image=System.Drawing.Image.FromStream(this.streamToPrint);
    int x=e.MarginBounds.X;
    int y=e.MarginBounds.Y;
    int width=image.Width;
    int height=image.Height;
    if((width/e.MarginBounds.Width)>(height/e.MarginBounds.Height))
    {
    width=e.MarginBounds.Width;
    height=image.Height*e.MarginBounds.Width/image.Width;
    }
    else
    {
    height=e.MarginBounds.Height;
    width=image.Width*e.MarginBounds.Height/image.Height;
    }
    System.Drawing.Rectangle destRect=new System.Drawing.Rectangle(x,y,width,height);
    e.Graphics.DrawImage(image,destRect,0,0,image.Width,image.Height,System.Drawing.GraphicsUnit.Pixel);
    break;
    default:
    break;
    }}
    }
    }
      

  4.   

    在C#中怎么传调用StartPrint()方法中的二个参数