次の方法で共有


PrintDocument クラス

プリンタに出力を送信する再利用可能なオブジェクトを定義します。

この型のすべてのメンバの一覧については、PrintDocument メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Drawing.Printing.PrintDocument

Public Class PrintDocument
   Inherits Component
[C#]
public class PrintDocument : Component
[C++]
public __gc class PrintDocument : public Component
[JScript]
public class PrintDocument extends Component

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

通常は、 PrintDocument クラスのインスタンスを作成し、印刷方法を記述したプロパティを設定して、 Print メソッドを呼び出すことで印刷プロセスを開始します。 PrintPage イベントを処理します。このときに、 PrintPageEventArgs に含まれている Graphics を使用して、印刷する出力を指定します。

印刷の詳細については、 System.Drawing.Printing 名前空間のトピックを参照してください。

使用例

[Visual Basic, C#, C++] C:\My Documents\MyFile.txt という名前のファイルを既定のプリンタで印刷する例を次に示します。この例を実行するには、印刷するファイルにパスを変更します。Windows フォーム デザイナを使用して InitializeComponent プロシージャを変更することもできます。

[Visual Basic, C#, C++] メモ   この例は、各行がページ幅内に収まることを前提にしています。

[Visual Basic, C#, C++] この例では、 System.ComponentModelSystem.Windows.FormsSystem.DrawingSystem.Drawing.PrintingSystem.IO の各名前空間を使用します。

 
Public Class PrintingExample
    Inherits System.Windows.Forms.Form
    Private components As System.ComponentModel.Container
    Private printButton As System.Windows.Forms.Button
    Private printFont As Font
    Private streamToPrint As StreamReader
    
    Public Sub New()
        ' The Windows Forms Designer requires the following call.
        InitializeComponent()
    End Sub    
    
    ' The Click event is raised when the user clicks the Print button.
    Private Sub printButton_Click(sender As Object, e As EventArgs)
        Try
            streamToPrint = New StreamReader("C:\My Documents\MyFile.txt")
            Try
                printFont = New Font("Arial", 10)
                Dim pd As New PrintDocument()
                AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
                pd.Print()
            Finally
                streamToPrint.Close()
            End Try
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub    
    
    ' The PrintPage event is raised for each page to be printed.
    Private Sub pd_PrintPage(sender As Object, ev As PrintPageEventArgs)
        Dim linesPerPage As Single = 0
        Dim yPos As Single = 0
        Dim count As Integer = 0
        Dim leftMargin As Single = ev.MarginBounds.Left
        Dim topMargin As Single = ev.MarginBounds.Top
        Dim line As String = Nothing
        
        ' Calculate the number of lines per page.
        linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)
        
        ' Print each line of the file.
        While count < linesPerPage
            line = streamToPrint.ReadLine()
            If line Is Nothing Then
                Exit While
            End If      
            yPos = topMargin + count * printFont.GetHeight(ev.Graphics)
            ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat())
            count += 1
        End While
        
        ' If more lines exist, print another page.
        If Not (line Is Nothing) Then
            ev.HasMorePages = True
        Else
            ev.HasMorePages = False
        End If
    End Sub
     
    
    ' The Windows Forms Designer requires the following procedure.
    Private Sub InitializeComponent()
        Me.components = New System.ComponentModel.Container()
        Me.printButton = New System.Windows.Forms.Button()
        
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(504, 381)
        Me.Text = "Print Example"
        
        printButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
        printButton.Location = New System.Drawing.Point(32, 110)
        printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
        printButton.TabIndex = 0
        printButton.Text = "Print the file."
        printButton.Size = New System.Drawing.Size(136, 40)
        AddHandler printButton.Click, AddressOf printButton_Click
        
        Me.Controls.Add(printButton)
    End Sub 

    ' This is the main entry point for the application.    
    Public Shared Sub Main()
        Application.Run(New PrintingExample())
    End Sub

End Class


[C#] 
public class PrintingExample : System.Windows.Forms.Form 
{
    private System.ComponentModel.Container components;
    private System.Windows.Forms.Button printButton;
    private Font printFont;
    private StreamReader streamToPrint;

   public PrintingExample() : base() 
   {
      // The Windows Forms Designer requires the following call.
      InitializeComponent();
   }

   // The Click event is raised when the user clicks the Print button.
   private void printButton_Click(object sender, EventArgs e) 
   {
      try 
      {
          streamToPrint = new StreamReader
             ("C:\\My Documents\\MyFile.txt");
          try 
          {
             printFont = new Font("Arial", 10);
             PrintDocument pd = new PrintDocument();
             pd.PrintPage += new PrintPageEventHandler
                (this.pd_PrintPage);
             pd.Print();
          }  
          finally 
          {
             streamToPrint.Close();
          }
      }  
      catch(Exception ex) 
      {
          MessageBox.Show(ex.Message);
      }
   }

   // The PrintPage event is raised for each page to be printed.
   private void pd_PrintPage(object sender, PrintPageEventArgs ev) 
   {
      float linesPerPage = 0;
      float yPos = 0;
      int count = 0;
      float leftMargin = ev.MarginBounds.Left;
      float topMargin = ev.MarginBounds.Top;
      string line = null;

      // Calculate the number of lines per page.
      linesPerPage = ev.MarginBounds.Height / 
         printFont.GetHeight(ev.Graphics);

      // Print each line of the file.
      while(count < linesPerPage && 
         ((line=streamToPrint.ReadLine()) != null)) 
      {
         yPos = topMargin + (count * 
            printFont.GetHeight(ev.Graphics));
         ev.Graphics.DrawString(line, printFont, Brushes.Black, 
            leftMargin, yPos, new StringFormat());
         count++;
      }

      // If more lines exist, print another page.
      if(line != null)
         ev.HasMorePages = true;
      else
         ev.HasMorePages = false;
   }


   // The Windows Forms Designer requires the following procedure.
   private void InitializeComponent() 
   {
      this.components = new System.ComponentModel.Container();
      this.printButton = new System.Windows.Forms.Button();

      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(504, 381);
      this.Text = "Print Example";

      printButton.ImageAlign = 
         System.Drawing.ContentAlignment.MiddleLeft;
      printButton.Location = new System.Drawing.Point(32, 110);
      printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
      printButton.TabIndex = 0;
      printButton.Text = "Print the file.";
      printButton.Size = new System.Drawing.Size(136, 40);
      printButton.Click += new System.EventHandler(printButton_Click);

      this.Controls.Add(printButton);
   }

   // This is the main entry point for the application.
   public static void Main(string[] args) 
   {
      Application.Run(new PrintingExample());
   }
}


[C++] 
public __gc class PrintingExample : public System::Windows::Forms::Form 
{
private:
   System::ComponentModel::Container* components;
   System::Windows::Forms::Button* printButton;
   System::Drawing::Font* printFont;
   StreamReader* streamToPrint;

public:
   PrintingExample() : Form() 
   {
      // The Windows Forms Designer requires the following call.
      InitializeComponent();
   }

   // The Click event is raised when the user clicks the Print button.
private:
   void printButton_Click(Object* /*sender*/, EventArgs* /*e*/) 
   {
      try 
      {
         streamToPrint = new StreamReader
            (S"C:\\My Documents\\MyFile.txt");
         try 
         {
            printFont = new System::Drawing::Font(S"Arial", 10);
            PrintDocument* pd = new PrintDocument();
            pd->PrintPage += new PrintPageEventHandler(this, &PrintingExample::pd_PrintPage);
            pd->Print();
         }  
         __finally 
         {
            streamToPrint->Close();
         }
      }  
      catch(Exception* ex) 
      {
         MessageBox::Show(ex->Message);
      }
   }

   // The PrintPage event is raised for each page to be printed.
   void pd_PrintPage(Object* /*sender*/, PrintPageEventArgs* ev) 
   {
      float linesPerPage = 0;
      float yPos = 0;
      int count = 0;
      float leftMargin = (float)ev->MarginBounds.Left;
      float topMargin = (float)ev->MarginBounds.Top;
      String* line = 0;

      // Calculate the number of lines per page.
      linesPerPage = ev->MarginBounds.Height / 
         printFont->GetHeight(ev->Graphics);

      // Print each line of the file.
      while(count < linesPerPage && 
         ((line=streamToPrint->ReadLine()) != 0)) 
      {
         yPos = topMargin + (count * 
            printFont->GetHeight(ev->Graphics));
         ev->Graphics->DrawString(line, printFont, Brushes::Black, 
            leftMargin, yPos, new StringFormat());
         count++;
      }

      // If more lines exist, print another page.
      if(line != 0)
         ev->HasMorePages = true;
      else
         ev->HasMorePages = false;
   }

   // The Windows Forms Designer requires the following procedure.
   void InitializeComponent() 
   {
      this->components = new System::ComponentModel::Container();
      this->printButton = new System::Windows::Forms::Button();

      this->AutoScaleBaseSize =  System::Drawing::Size(5, 13);
      this->ClientSize =  System::Drawing::Size(504, 381);
      this->Text = S"Print Example";

      printButton->ImageAlign = 
         System::Drawing::ContentAlignment::MiddleLeft;
      printButton->Location =  System::Drawing::Point(32, 110);
      printButton->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
      printButton->TabIndex = 0;
      printButton->Text = S"Print the file.";
      printButton->Size =  System::Drawing::Size(136, 40);
      printButton->Click += new System::EventHandler(this, &PrintingExample::printButton_Click);

      this->Controls->Add(printButton);
   }

};

// This is the main entry point for the application.
int main() 
{
   Application::Run(new PrintingExample());
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Drawing.Printing

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Drawing (System.Drawing.dll 内)

参照

PrintDocument メンバ | System.Drawing.Printing 名前空間 | Graphics | PageSettings | PrintController | PrinterSettings