چاپ محتویات کنترل GridView در Windows Form با استفاده از #C و VB.NET
دوشنبه 10 فروردین 1394در این مقاله ما نحوه چاپ کنترل DataGridView را در windows Forms با استفاده از دستورات #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

- C#.net
- 6k بازدید
- 1 تشکر