Compartir a través de


Cómo: Seleccionar las impresoras conectadas al equipo de un usuario en formularios Windows Forms

Actualización: noviembre 2007

A menudo, los usuarios desean imprimir en una impresora diferente de la predeterminada. Puede permitir a los usuarios que elijan una impresora entre las instaladas mediante el componente PrintDialog. A través del componente PrintDialog, se captura y se utiliza el DialogResult del componente PrintDialog para seleccionar la impresora.

En el procedimiento siguiente, se selecciona un archivo de texto para imprimirlo en la impresora predeterminada. A continuación se crea una instancia de la clase PrintDialog.

Para elegir una impresora y, a continuación, imprimir un archivo

  • Seleccione la impresora que se va a utilizar mediante el componente PrintDialog.

    En el ejemplo de código siguiente, se controlan dos eventos. En el primero, un evento Click del control Button, se crea una instancia de la clase PrintDialogy la impresora seleccionada por el usuario se captura en la propiedad DialogResult.

    En el segundo evento, el evento PrintPage del componente PrintDocument, se imprime un documento de ejemplo en la impresora especificada.

    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# y Visual C++) Coloque el código siguiente en el constructor del formulario para registrar el controlador de eventos.

    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);
    

Vea también

Otros recursos

Funcionalidad para imprimir en formularios Windows Forms