Практическое руководство. Выбор принтера, подключенного к компьютеру пользователя, в 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);