Поделиться через


Практическое руководство. Выбор принтера, подключенного к компьютеру пользователя, в Windows Forms

Обновлен: Ноябрь 2007

Часто пользователям необходимо выбрать принтер, отличный от установленного по умолчанию. Можно разрешить пользователям выбирать принтер из текущего набора установленных принтеров, используя компонент PrintDialog. Посредством компонента PrintDialog можно получить значение DialogResult компонента PrintDialog и использовать это значение для выбора принтера.

В следующем примере для печати с помощью принтера по умолчанию выбирается текстовый файл. Затем создается экземпляр класса PrintDialog.

Чтобы выбрать принтер и напечатать файл, выполните следующие действия.

  • Выберите принтер, который необходимо использовать, с помощью компонента PrintDialog.

    В следующем примере обрабатываются два события. В первом событии Click элемента управления Button создается экземпляр класса PrintDialog, а принтер, выбранный пользователем, фиксируется в свойстве DialogResult.

    Во втором событии PrintPage компонента PrintDocumentпечатается образец документа на указанном принтере.

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim PrintDialog1 As New PrintDialog()
       PrintDialog1.Document = PrintDocument1
       Dim result As DialogResult = PrintDialog1.ShowDialog()
    
       If (result = DialogResult.OK) Then
         PrintDocument1.Print()
       End If 
    
    End Sub
    
    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
       e.Graphics.FillRectangle(Brushes.Red, New Rectangle(500, 500, 500, 500))        
    End Sub
    
    private void button1_Click(object sender, System.EventArgs e)
    {
       PrintDialog printDialog1 = new PrintDialog();
       printDialog1.Document = printDocument1;
       DialogResult result = printDialog1.ShowDialog();
       if (result == DialogResult.OK)
       {
          printDocument1.Print();
       }
    }
    
    private void printDocument1_PrintPage(object sender, 
    System.Drawing.Printing.PrintPageEventArgs e)
    {
       e.Graphics.FillRectangle(Brushes.Red, 
         new Rectangle(500, 500, 500, 500));
    }
    
    private void button1_Click(Object sender, System.EventArgs e)
    {
       PrintDialog printDialog1 = new PrintDialog();
       printDialog1.set_Document(printDocument1);
       DialogResult result = printDialog1.ShowDialog();
       if (result == DialogResult.OK)
       {
          printDocument1.Print();
       }
    }
    
    private void printDocument1_PrintPage(Object sender,
    System.Drawing.Printing.PrintPageEventArgs e)
    {
       e.get_Graphics().FillRectangle(Brushes.get_Red(),
          new Rectangle(500, 500, 500, 500));
    }
    
    private:
       void button1_Click(System::Object ^ sender,
          System::EventArgs ^ e)
       {
          PrintDialog ^ printDialog1 = gcnew PrintDialog();
          printDialog1->Document = printDocument1;
          System::Windows::Forms::DialogResult result = 
             printDialog1->ShowDialog();
          if (result == DialogResult::OK)
          {
             printDocument1->Print();
          }
       }
    private:
       void printDocument1_PrintPage(System::Object ^ sender,
          System::Drawing::Printing::PrintPageEventArgs ^ e)
       {
          e->Graphics->FillRectangle(Brushes::Red,
             Rectangle(500, 500, 500, 500));
       }
    

    (Visual C#, Visual J# и Visual C++) Добавьте в конструктор формы следующий код, чтобы зарегистрировать обработчик событий.

    this.printDocument1.PrintPage += new
       System.Drawing.Printing.PrintPageEventHandler
       (this.printDocument1_PrintPage);
    this.button1.Click += new System.EventHandler(this.button1_Click);
    
    this.printDocument1.add_PrintPage(new
    System.Drawing.Printing.PrintPageEventHandler
    (this.printDocument1_PrintPage));
    this.button1.add_Click(new System.EventHandler(this.button1_Click));
    
    this->printDocument1->PrintPage += gcnew
       System::Drawing::Printing::PrintPageEventHandler
       (this, &Form1::printDocument1_PrintPage);
    this->button1->Click += gcnew
       System::EventHandler(this, &Form1::button1_Click);
    

См. также

Другие ресурсы

Поддержка печати в Windows Forms