首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c# Datagridview值打印到不同的打印机

C#中的DataGridView是一个用于显示和编辑数据的控件,而将DataGridView的值打印到不同的打印机可以通过以下步骤实现:

  1. 获取DataGridView中的数据:可以通过DataGridView的DataSource属性获取绑定的数据源,或者直接遍历DataGridView的行和列来获取数据。
  2. 创建打印文档对象:使用System.Drawing.Printing命名空间中的PrintDocument类创建一个打印文档对象。
  3. 设置打印事件处理程序:为打印文档对象的PrintPage事件添加一个事件处理程序。在该事件处理程序中,可以使用Graphics对象绘制DataGridView中的数据。
  4. 设置打印预览对话框:可以使用PrintPreviewDialog类创建一个打印预览对话框,将打印文档对象的PrintPage事件与该对话框关联。
  5. 打印数据:可以使用PrintDocument对象的Print方法将数据打印到指定的打印机。

以下是一个示例代码,演示了如何将DataGridView的值打印到不同的打印机:

代码语言:txt
复制
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的值打印到不同的打印机。你可以根据实际需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# winform DataGridView 常见属性

C# winform DataGridView 属性说明 ① 取得或者修改当前单元格内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判断新增行 ⑤ 行用户删除操作自定义 ⑥ 行、列隐藏和删除...⑭ 右键菜单(ContextMenuStrip)设置 ⑮ 单元格边框、 网格线样式设定 ⑯ 单元格表示设定 ⑰ 用户输入时,单元格输入设定 ⑱ 设定新加行默认 19 CellDoubleClick...索引器参数是: columnIndex, rowIndex 或是 columnName, rowIndex 这与习惯不同。...[C#] // 改变DataGridView1第一列列头内容 DataGridView1.Columns[0].HeaderText = “第一列”; ⑫ DataGridView 剪切板操作 TOP...________________________________________ ⑯ DataGridView 单元格表示自定义 通过CellFormatting事件,可以自定义单元格表示

3.6K40

VB.NET 合并PDF工具(PDF批量打印)

答:因现在网上99%以上PDF合并工具都是需要收费,或者要使用收费破J版,或者是一些网页在线服务不能上传和合并大批量文件(这也涉及到文件安全性)所以想着自己弄一个....答:开发这款小工具主要解决问题是大批量打印PDF文件,平常在工作中我们常常需要打印大批量PDF文件,我们通常操作就是使用PDF阅读器,一个个打开然后,然后就是一个个点击打印(这是我知道方式哈,有更简洁方式请广大网友分享一下...,让我学习学习),这样就要耗费我们非常多时间效率低下;我想到方式就是使用程序一个个批量发送到打印机打印,但这种方式有一个弊端就是不稳定有可能会中断,然后就不知道自己打印到那一份文件了,同时几个人打印也容易被人插进来...,导致文件错乱,不好分类;后来我就想到了一个方式就是把PDF一次性合并成一个文件,然后发送到打印机,这样就不怕中断,因它只是一个单一文件,同时打印别人也无法插进来,要等当前单个文件打印完成后别人才能插进来...datagridview操作,就不放出来了) ''' ''' 合并PDF文件 ''' ''' <param name="Save_Path"

1.8K30

c#中在datagridview表格动态增加一个按钮方法

c#中在datagridview表格动态增加一个按钮方法,如果想要这一套教程可以移步去这里 《期末作业C#实现学生宿舍管理系统》,对了最近我们有一个人工智能交流群,如果大家对代码有问题,想交流可以进群...效果图片 : 第一步: 在Load事件中写入代码 //在datagridview中添加button按钮 DataGridViewButtonColumn btn = new...别急 我们在 dataGridView1_CellContentClick事件中添加方法 //点击第一行button按钮事件 int index = dataGridView1...MessageBox.Show(aa.ToString()); //new Form5(aa.ToString()).Show(); 这样的话 我们就可以点击对应行修改来获取到...id 第三步: 相信大家也发现了,我们按钮都能触发,那这样肯定不能区分删除和修改,于是我们给控件命名作用就来了 我们在 dataGridView1_CellContentClick事件中修改下刚刚代码

1K30

打印小册子中断了怎么办呢_pdf小册子双面打印

大家好,又见面了,我是你们朋友全栈君。 不知道大家有没有打印过小册子,就是为了升值上,不但正反面,而且会将A4纸分为左右两部分打印,这样就可以成为一本32开小册子。...在这里可以首先分享下针对小册子打印方法,像wps针对pdf就提供打印小册子设置,对于支持双面打印打印机,小册子子集选择双面即可,而针对只能单面的打印机,也不要慌,可以分两次,先选择正面,在选择背面即可...如果所有的页码都编了,那么实际可以立即得出:1-19页没有打印,281-300没有打印,那么在打印机中设定新页码1-19,281,300即可解决。...那也不用担心,去word或者wps,pdf自己找到响应标识页码,或者已经打印到最后内容对应页码看一下即可。 按照pdf或者word等中提示实际页码去设定即可。...顺便提一句,打印机打印小册子第一张纸是小册子最中间一张,往往是连号,或者是相隔一个号,如下图示意。可以作为验算依据,这里就不赘述。

1.4K30

期末作业C#实现学生宿舍管理系统

开发背景 完整代码下载地址:点我下载 优化移步: 《c#中在datagridview表格动态增加一个按钮方法》 《C#实现多窗口切换:Panel详细教程(亲测)》 文章还在更新,上次更新时间2022...; } Console.ReadLine(); mycon.Close(); 删除 与插入不同,这里需要对dataGridView1...Cells[0].Value; //获取所在行第一列元素 dataGridView1.Rows.RemoveAt(index); MessageBox.Show(aa.ToString()); 这一步作用是获取到鼠标选中所在行第一列元素...(aa.ToString()); 接下来需要把id传给Form5窗口,我们在这里了解下通过构造函数传 特点:传是单向(不可以互相传),实现简单 接收窗体需要如下代码: (这里id为string...答:通过表单传获取到id进行数据库语句删除,删除本地再删除数据库里面的 窗口如何传: 本次通过构造函数,特点:传是单向(不可以互相传),实现简单 实现代码如下: 在目标窗体中 int

20830

奔图打印机显示未连接_打印机无法打印10种解决方法

步骤如下: 1.单击Windows“开始”菜单,指向“设置”,单击“打印机”,打开“打印机”窗口。 2.右键单击打印机图标,系统弹出快捷菜单,单击其中“设为默认”。 四、取消暂停打印。...方法是:在“打印机”窗口,右键单击在用打印机图标,然后单击以清除“暂停打印”选项前对号“√”。 五、使硬盘上可用空间不低于10MB。...“未选定”项是指定Window s 等待打印机进入联机状态时间,超过指定时间之后就将显示错误消息。 七、确保打印到合适本地打印机端口。...步骤如下: 1.在“打印机”窗口,右键单击打印机图标,再单击“属性”。 2.单击“详细资料”选项卡,在“打印到以下端口”框中,确保已将打印机设置到适当端口。...3.测试打印机电缆换上另一根 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136423.html原文链接:https://javaforall.cn

8.3K40

MultiRow中文版技术白皮书

大多数表格控件在数据展示上都是比较规整,即单行单列展示数据。然而,实际商业应用中需要一些多元化数据展现方式,MultiRow就是这样一款能够自由展现数据基于.NET平台表格控件。...MultiRow设计思路 支持自由布局架构设计 传统表格类控件布局都是严格行和列结构,通过合并单元格完成特殊布局需要。...在数据校验方面,MultiRow内置了十余种校验器,可以方便满足诸如范围校验,比较校验,正则表达式校验等,当校验失败时,可以以Tip,Icon,声音等多种方式提示用户,以便重新输入正确。...重视易用性 为了降低用户学习成本,MultiRow采用了和DataGridView相似的接口设计,对于曾经使用过Microsoft DataGridView或者熟悉DataGridView接口设计开发人员...通过我们提供集成设计器,可以方便快速设计出发票。另外,套是发票中一个很常用用例,MultiRow使用了.NET打印机制,能够精确实现套功能。 ?

1.2K50

MultiRow发现之旅(七)- 套和打印

其中,Print方法支持将GcMulitRow打印到一个Graphics(Print方法第一个参数为Graphics对象)上面,或者直接输出到打印机,你可以根据不同需求调用不同方法重载。...你会发现Print方法参数当中,有一些让你指定打印范围和样式,不过这些打印方法大部分是在需要打印到Graphics对象时需要指定,而对于直接输出到打印机,GcMultiRow提供了一个属性叫做PrintSettings...上面的三个属性设置,对不同PagingMode都是起作用。 3....在这里值得一提是Content打印模式,如果将PrintStyle设置为Content模式,此时,所有的样式将不被打印,只有每个格子当中被打印出来,这样你可以实现“套功能。...还可以在调用Print()方法时,指出要不要弹出打印机设置对话框,更改打印机设置: ?

1.7K80

winform 取消datagridview第一行选中状态

C# WinForm 取消DataGridView默认选中Cell 使其不反蓝 http://www.cnblogs.com/freeliver54/archive/2009/02/16/1391325....html dataGridView1.Rows[0].Selected = false; 放在窗体构造函数中 怎么都看似不起效果 首行首列还是反蓝 后来尝试放在窗体Load中 终于看不不反蓝了...同时需要注意dataGridView1TabIndex (可以手动修改F4 dataGridView1TablIndex属性) 如果是一个单独form窗体,则直接在Load方法中添加以下方法...: private void datagridview1_Load(object sender, EventArgs e) { datagridview1...如果form窗体在父窗体中,子窗体 form1 , 父窗体 mainform 方法一: 在form1窗体中添加 datagridviewDataBindingComplete事件 private

2.7K00

可视化数据库设计软件有哪些_数据库可视化编程

学习目标: C#数据库应用程序开发环境构成 服务器资源管理器 类型化数据集 创建简单数据库应用程序 水晶报表 Notes: 类型化数据集 利用服务器资源管理器建立数据连接 利用服务器资源管理器可执行任务如下...格式: .Rows[i].Cells[j].Value 表示数据表中第i条记录(行)第j个字段(列)。...表格数据通常以类似账目的格式显示,其中各交替行背景颜色不同,可通过设置AlternatingRowsDefaultCellStyle 属性实现交替行显示效果。...textBox5.Text = dataGridView1.SelectedCells[0].Value.ToString();//被选择单元格数组第一个 textBox5...= dataGridView1.SelectedCells[0].Value.ToString();//被选择单元格数组第一个 textBox5.Text = dataGridView1

6.7K40

C#实例:datagridview单元格合并

这是替C#微信交流群群友做一个小实例,目的就是在datagridview选择对应行以后,点击button后获取对应行ip,并执行相应操作,其实我觉得这样的话button没必要非放置到datagridview...但是为了满足群友需求,还是这么做了。 先看一下运行效果: ? 1....= "选择"; dataGridView1.Columns.Add(newColumn); 这样添加列是放在最后一列,也许你希望它在其它列,例如第二列,那么可以: dataGridView1.Columns.Insert...) // 如果下一行和当前行数据不同,则在当前单元格画一条底边线 if (e.RowIndex <...e.CellBounds.Left , e.CellBounds.Bottom); // 画(填写)单元格内容,相同内容单元格只填写第一个

4.6K10

如何实现报表设计中高精度报表套

报表 套也被称作定位打印,即在一张预设格式票据上,零误差打印上需要填写数据内容。...预设票据纸张可以理解为,在报表制作过程中,为报表设置为特定报表背景(票据电子版),然后根据此背景设置需要填写数据项及匹配数据控件。因此打印时只打印数据,而整个背景不会输出到打印机中。...在报表设计过程中只需要将比如:名称、抬头、地址电话等信息,而整个背景不会输出到打印机中。...实现方法 本文以葡萄城报表为例,在设计报表阶段加载套纸作为报表背景图片,实际打印时仅将数据打印到相应位置,以便更方便实现报表套。 1....同时,可以层为单位控制其在不同设备上可见性,如是否在纸张显示,该层所有的控件是否输出到屏幕,该层是否用于导出。零编码实现一式多份、报表套等中国式报表需求。 6.

1.3K10

ExcelVBA一键批量打印文件夹中所有word文档

ExcelVBA一键批量打印文件夹中所有word文档 ================== 【问题】总公司有收到有几百个word文件,每一个都要打印5份,几W个呢!...fileToOpen =Application.GetOpenFilename(filefilter:="Word文档(*.do*),*.do*",FilterIndex:=4, Title:="请选择要处理文档...其实指就是打印范围了。...参数介绍 下面我们给出Printout中文语法 打印范围.PrintOut(从哪页开始, 打到第几页, 打印份数, 打印求是否预览, 打印机名称, 是否打印到文件, 是否打印多个副本,打印到文件名称...) 二、Printout使用举例 A、设置打印第1页到第5页 ActiveWindow.SelectedSheets.PrintOut From:=1, To:=5 B、要打印3份 Sheets("

3.1K10

使用C#开发数据库应用程序

string boolean bool 注意:C#中布尔类型关键字与java不同,使用bool,C#中字符串数据类型是小写。...1-3.C#中注释 C#行注释和块注释与Java是完全相同,分别使用//和/*..*/,但文档注释与java中略有不同,使用"///",且文档注释每一行都以"///"开头。...b.常见错误 注意:C#允许在初始化同时指定数组长度,但是数组初始数目必须与数组长度完全一样....myDataSet=new DataSet("MySchool"); 8-2:DataAdapter对象 a.认识DataAdapter对象 DataAdapter(数据适配器)属于.NET数据提供程序,所以不同类型数据库需要使用不同数据适配器...8-3:DataGridView控件 a.认识DataGridView控件 DataGridView控件主要属性 属性 Columns 包含集合 DataSource DataGridView

5.8K30

C# WPF MVVM模式Prism框架下事件发布与订阅

01 前言 处理同模块不同窗体之间通信和不同模块之间不同窗体通信,Prism提供了一种事件机制,可以在应用程序中低耦合模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行通讯...Prism事件聚合器,这玩意实现原理是观察者模式,观察者模式也就是常说发布/订阅模式。...WPF MVVM项目实战(进阶①) C# WPF MVVM项目实战(进阶②) C# WPF框架Caliburn.Micro快速搭建 C# WPF项目实战 C# WPF mvvm模式下combobox绑定...C# WPF文本框TextEdit不以科学计数法显示 C# 通过正则表达式来限制控件输入有效性 C# datagridview、datagrid、GridControl增加行号 C# =>符号使用...C# 无意间写了一段线程死锁代码 C# 看懂这100+行代码,你就真正入门了(经典) C# WPF项目实战(经典) WPF 如何修改button圆角(经典) WPF XAML 为项目设置全局样式

2.8K20
领券