방법: Windows Forms에서 사용자의 컴퓨터에 연결된 프린터 선택
업데이트: 2007년 11월
사용자가 기본 프린터가 아닌 프린터를 사용하여 인쇄하는 경우가 많습니다. PrintDialog 구성 요소를 사용하여 현재 설치된 프린터 중에서 사용자가 선택하도록 할 수 있습니다. PrintDialog 구성 요소를 통해 PrintDialog 구성 요소의 DialogResult를 캡처하여 프린터를 선택하는 데 사용할 수 있습니다.
다음 절차에서는 텍스트 파일을 기본 프린터로 인쇄합니다. 그러면 PrintDialog 클래스가 인스턴스화됩니다.
프린터를 선택한 다음 파일을 인쇄하려면
PrintDialog구성 요소를 사용하여 사용할 프린터를 선택합니다.
다음 코드 예제에서는 처리해야 할 이벤트가 두 가지 있습니다. 첫 번째 이벤트인 Button 컨트롤의 Click 이벤트에서는 PrintDialog 클래스가 인스턴스화되고 사용자가 선택한 프린터가 DialogResult속성에 캡처됩니다.
두 번째 이벤트인 PrintDocument구성 요소의 PrintPage 이벤트에서는 지정된 프린터로 샘플 문서를 인쇄합니다.
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);