C#中的DataGridView是一个用于显示和编辑数据的控件,而将DataGridView的值打印到不同的打印机可以通过以下步骤实现:
以下是一个示例代码,演示了如何将DataGridView的值打印到不同的打印机:
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace DataGridViewPrintingExample
{
public partial class MainForm : Form
{
private DataGridView dataGridView;
public MainForm()
{
InitializeComponent();
// 创建一个DataGridView并绑定数据源
dataGridView = new DataGridView();
dataGridView.DataSource = GetDataSource();
// 添加打印按钮
Button printButton = new Button();
printButton.Text = "打印";
printButton.Click += PrintButton_Click;
Controls.Add(printButton);
}
private void PrintButton_Click(object sender, EventArgs e)
{
// 创建打印文档对象
PrintDocument printDocument = new PrintDocument();
// 设置打印事件处理程序
printDocument.PrintPage += PrintDocument_PrintPage;
// 创建打印预览对话框
PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
printPreviewDialog.Document = printDocument;
// 显示打印预览对话框
printPreviewDialog.ShowDialog();
}
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
// 获取打印文档对象
PrintDocument printDocument = (PrintDocument)sender;
// 获取DataGridView的数据
DataTable dataSource = (DataTable)dataGridView.DataSource;
// 设置打印字体
Font font = new Font("Arial", 12);
// 设置打印位置
float x = e.MarginBounds.Left;
float y = e.MarginBounds.Top;
// 打印DataGridView的标题行
foreach (DataGridViewColumn column in dataGridView.Columns)
{
e.Graphics.DrawString(column.HeaderText, font, Brushes.Black, x, y);
x += column.Width;
}
// 打印DataGridView的数据行
foreach (DataRow row in dataSource.Rows)
{
x = e.MarginBounds.Left;
y += font.GetHeight();
foreach (DataGridViewColumn column in dataGridView.Columns)
{
string value = row[column.Index].ToString();
e.Graphics.DrawString(value, font, Brushes.Black, x, y);
x += column.Width;
}
}
// 检查是否还有更多的数据需要打印
if (y + font.GetHeight() < e.MarginBounds.Bottom)
e.HasMorePages = false;
else
e.HasMorePages = true;
}
private DataTable GetDataSource()
{
// 返回一个示例数据源
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
dataTable.Rows.Add("John", 25);
dataTable.Rows.Add("Jane", 30);
return dataTable;
}
}
}
这是一个简单的示例,演示了如何将DataGridView的值打印到不同的打印机。你可以根据实际需求进行修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云