چاپ محتویات کنترل GridView در Windows Form با استفاده از #C و VB.NET

در این مقاله ما نحوه چاپ کنترل DataGridView را در windows Forms با استفاده از دستورات #c و VB.NET شره می دهیم .

چاپ محتویات کنترل GridView در Windows Form با استفاده از #C و VB.NET

برای چاپ محتویات GridView مطابق مراحل زیر عمل میکنیم :

ابتدا  یک کنترل DataGridView , یک دکمه , یک کنترل PrintPreviewDialog و یک PrintDocument به فرم خود اضافه می کنیم .

سپس یک DataTable میسازیم و به عنوان پیش فرض اطلاعاتی را در آن قرار می دهیم  :

کد #C :


private void Form1_Load(object sender, EventArgs e)
{
    this.BindDataGridView();
}
 
private void BindDataGridView()
{
    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),
                                new DataColumn("Name", typeof(string)),
                                new DataColumn("Country",typeof(string)) });
    dt.Rows.Add(1, "John Hammond", "United States");
    dt.Rows.Add(2, "Mudassar Khan", "India");
    dt.Rows.Add(3, "Suzanne Mathews", "France");
    dt.Rows.Add(4, "Robert Schidner", "Russia");
    this.dataGridView1.DataSource = dt;
}

کد VB.NET :


Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    BindDataGridView()
End Sub
 
Private Sub BindDataGridView()
    Dim dt As New DataTable()
    dt.Columns.AddRange(New DataColumn(2) {New DataColumn("Id", GetType(Integer)), New DataColumn("Name", GetType(String)), New DataColumn("Country", GetType(String))})
    dt.Rows.Add(1, "John Hammond", "United States")
    dt.Rows.Add(2, "Mudassar Khan", "India")
    dt.Rows.Add(3, "Suzanne Mathews", "France")
    dt.Rows.Add(4, "Robert Schidner", "Russia")
    Me.dataGridView1.DataSource = dt
End Sub

زمانی که دکمه چاپ را کلیک میکنیم , در ابتدا ارتفاع کنترل را با میانگین تعداد سطر محاسبه میکند , سپس یک شئی Bitmap ساخته میشود و کنترل DataGridView در شئی ساخته شده قرار داده میشود و در آخر کنترل PrintPreviewDialog شئ Bitmap ساخته شده را برای تایید آخر به کاربر نمایش می دهد .

کد #C :


Bitmap bitmap;
private void btnPrint_Click(object sender, EventArgs e)
{
    //Resize DataGridView to full height.
    int height = dataGridView1.Height;
    dataGridView1.Height = dataGridView1.RowCount * dataGridView1.RowTemplate.Height;
 
    //Create a Bitmap and draw the DataGridView on it.
    bitmap = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height);
    dataGridView1.DrawToBitmap(bitmap, new Rectangle(0, 0, this.dataGridView1.Width, this.dataGridView1.Height));
 
    //Resize DataGridView back to original height.
    dataGridView1.Height = height;
 
    //Show the Print Preview Dialog.
    printPreviewDialog1.Document = printDocument1;
    printPreviewDialog1.PrintPreviewControl.Zoom = 1;
    printPreviewDialog1.ShowDialog();
}
 
private void PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    //Print the contents.
    e.Graphics.DrawImage(bitmap, 0, 0);
}

کد VB.NET :


Private bitmap As Bitmap
Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles btnPrint.Click
    'Resize DataGridView to full height.
    Dim height As Integer = dataGridView1.Height
    dataGridView1.Height = dataGridView1.RowCount * dataGridView1.RowTemplate.Height
 
    'Create a Bitmap and draw the DataGridView on it.
    bitmap = New Bitmap(Me.dataGridView1.Width, Me.dataGridView1.Height)
    dataGridView1.DrawToBitmap(bitmap, New Rectangle(0, 0, Me.dataGridView1.Width, Me.dataGridView1.Height))
 
    'Resize DataGridView back to original height.
    dataGridView1.Height = height
 
    'Show the Print Preview Dialog.
    printPreviewDialog1.Document = printDocument1
    printPreviewDialog1.PrintPreviewControl.Zoom = 1
    printPreviewDialog1.ShowDialog()
End Sub
 
Private Sub PrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles printDocument1.PrintPage
    'Print the contents.
    e.Graphics.DrawImage(bitmap, 0, 0)
End Sub

فایل های ضمیمه