C#实现打印与打印预览功能可以通过以下步骤来完成:
1. 准备打印文档
首先,我们需要准备好需要打印的文档。可以使用C#中的PrintDocument类来创建打印文档。以下是一个简单的示例代码,演示如何使用PrintDocument类:
private void PrintDocument1_PrintPage(object sender, PrintPageEventArgs e) {
// 在这里编写打印文档的绘制代码
e.Graphics.DrawString("Hello, world!", new Font("Arial", 12), Brushes.Black, 10, 10);
}
上述示例代码中,PrintDocument类的PrintPage事件用于绘制打印文档的内容。在PrintPage事件中,我们可以使用Graphics对象来绘制文本、图像等内容。
2. 创建打印预览窗口
接下来,我们需要创建一个打印预览窗口。可以使用C#中的PrintPreviewDialog类来创建打印预览窗口。以下是一个简单的示例代码,演示如何创建打印预览窗口:
private void buttonPreview_Click(object sender, EventArgs e) {
// 创建打印预览窗口
PrintPreviewDialog previewDialog = new PrintPreviewDialog();
// 设置打印预览窗口显示的打印文档
previewDialog.Document = PrintDocument1;
// 显示打印预览窗口
previewDialog.ShowDialog();
}
上述示例代码中,我们创建了一个PrintPreviewDialog对象,并将我们之前创建的打印文档(PrintDocument1)指定给PrintPreviewDialog的Document属性。最后,显示PrintPreviewDialog窗口。
3. 执行打印操作
最后,我们需要执行打印操作。一般情况下,我们可以使用PrintDocument类的Print方法来执行打印操作。以下是一个简单的示例代码,演示如何执行打印操作:
private void buttonPrint_Click(object sender, EventArgs e) {
// 执行打印操作
PrintDocument1.Print();
}
上述示例代码中,我们使用PrintDocument1的Print方法来执行打印操作。
示例一:打印一行文本
下面,我们将演示如何通过代码打印一行文本“Hello, world!”。
PrintDocument printDocument = new PrintDocument();
printDocument.PrintPage += new PrintPageEventHandler(PrintDocument1_PrintPage);
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument;
if (printDialog.ShowDialog() == DialogResult.OK) {
printDocument.Print();
}
private void PrintDocument1_PrintPage(object sender, PrintPageEventArgs e) {
e.Graphics.DrawString("Hello, world!", new Font("Arial", 12), Brushes.Black, 10, 10);
}
上述代码中,我们创建了一个PrintDocument对象,然后使用PrintDocument的PrintPage事件来绘制文本,最后通过PrintDialog打开打印对话框,用户确认后执行打印操作。
示例二:打印DataGridView表格
下面,我们将演示如何通过代码打印一个DataGridView控件中的表格。
PrintDocument printDocument = new PrintDocument();
printDocument.PrintPage += new PrintPageEventHandler(PrintDocument1_PrintPage);
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument;
if (printDialog.ShowDialog() == DialogResult.OK) {
printDocument.Print();
}
private void PrintDocument1_PrintPage(object sender, PrintPageEventArgs e) {
DataGridView dataGridView = new DataGridView();
dataGridView.DataSource = dataTable;
int rowHeight = dataGridView.Rows[0].Height;
int columnCount = dataGridView.ColumnCount;
int rowCount = dataGridView.RowCount;
int x = e.MarginBounds.Left;
int y = e.MarginBounds.Top;
for (int i = 0; i < dataGridView.ColumnCount; i++) {
e.Graphics.FillRectangle(new SolidBrush(Color.LightGray), new Rectangle(x, y, dataGridView.Columns[i].Width, rowHeight));
e.Graphics.DrawRectangle(Pens.Black, new Rectangle(x, y, dataGridView.Columns[i].Width, rowHeight));
e.Graphics.DrawString(dataGridView.Columns[i].HeaderText, dataGridView.Font, Brushes.Black, new RectangleF(x, y, dataGridView.Columns[i].Width, rowHeight));
x += dataGridView.Columns[i].Width;
}
y += rowHeight;
for (int i = 0; i < dataGridView.RowCount; i++) {
x = e.MarginBounds.Left;
for (int j = 0; j < columnCount; j++) {
e.Graphics.DrawRectangle(Pens.Black, new Rectangle(x, y, dataGridView.Columns[j].Width, rowHeight));
e.Graphics.DrawString(dataGridView.Rows[i].Cells[j].FormattedValue.ToString(), dataGridView.Font, Brushes.Black, new RectangleF(x, y, dataGridView.Columns[j].Width, rowHeight));
x += dataGridView.Columns[j].Width;
}
y += rowHeight;
}
}
上述代码中,我们创建了一个PrintDocument对象,然后使用PrintDocument的PrintPage事件来绘制DataGridView中的表格,最后通过PrintDialog打开打印对话框,用户确认后执行打印操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现打印与打印预览功能的思路及代码 - Python技术站