共用方式為


如何列印表單 (Windows Forms .NET)

在開發過程中,您通常會想要列印 Windows 表單的複本。 下列程式碼範例示範如何使用 CopyFromScreen 方法列印目前表單的複本。

範例

若要執行範例程式碼,請使用下列設定將兩個元件新增至表單:

Object Property\Event
按鈕 Name Button1
Click Button1_Click
PrintDocument Name PrintDocument1
PrintPage PrintDocument1_PrintPage

按一下 Button1 時,會執行下列程式碼。 程式碼會從表單建立 Graphics 物件,並將其內容儲存至名為 memoryImageBitmap 變數。 呼叫 PrintDocument.Print 方法,它會叫用 PrintPage 事件。 列印事件處理常式會在印表機頁面的 Graphics 物件上繪製 memoryImage 點陣圖。 當列印事件處理常式程式碼傳回時,會列印頁面。

namespace Sample_print_win_form1
{
    public partial class Form1 : Form
    {
        Bitmap memoryImage;
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            Graphics myGraphics = this.CreateGraphics();
            Size s = this.Size;
            memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
            Graphics memoryGraphics = Graphics.FromImage(memoryImage);
            memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);

            printDocument1.Print();
        }

        private void PrintDocument1_PrintPage(
           System.Object sender,
           System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(memoryImage, 0, 0);
        }
    }
}
Public Class Form1
    
    Dim memoryImage As Bitmap

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
         
        Dim myGraphics As Graphics = Me.CreateGraphics()
        Dim s As Size = Me.Size
        memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
        Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
        memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s)
        
        PrintDocument1.Print()
        
    End Sub

    Private Sub PrintDocument1_PrintPage(
        ByVal sender As System.Object, 
        ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

        e.Graphics.DrawImage(memoryImage, 0, 0)
        
    End Sub
End Class

穩固程式設計

以下條件可能會造成例外狀況:

  • 您無權存取印表機。

  • 未安裝印表機。

.NET 安全性

若要執行此程式碼範例,您必須具有存取與電腦搭配使用之印表機的權限。

另請參閱