首页
学习
活动
专区
工具
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#之二十三 打印和水晶报表

​C#程序设计及宿舍管理系统实战 ​​ 打印组件介绍 打印是常用的的功能,打印的原理从本质上和Windows窗体画图的原理是一样的,你在窗体里面画了一个圆,那么同样的代码,打印机也会在纸张的同一个位置打印了出一个圆...,它们所不同的就是输出终端而已,下面让我们先来看一下关于打印的一些类。...(属性) 获取或设置一个值,该值指示是否启用“打印到文件“复选框 AllowSelection(属性) 获取或设置一个值,该值指示是否启用“页“选项按钮 Document(属性) 获获取或设置一个值,指示用于获取...PrinterSetting类的PrintDocument对象 PrintertSetting(属性) 获取或设置对话修改的打印机设置 AllowSomePage(属性) 获取或设置一个值,该值指示是否启用...“选择“选项按钮 PrintToFile(属性) 获取或设置一个值,该值批示是否选中“打印到文件“复选框 Reset(属性) 将所有选项,最后待定的打印机和页面设置重新设置为其 默认值

13700

C# winform DataGridView 常见属性

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

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

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

    1.7K30

    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事件中修改下刚刚的代码

    1.7K30

    期末作业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

    29830

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

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

    10.6K40

    MultiRow中文版技术白皮书

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

    1.3K50

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

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

    1.8K80

    winform 取消datagridview第一行选中状态

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

    2.8K00

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

    学习目标: C#数据库应用程序的开发环境的构成 服务器资源管理器 类型化数据集 创建简单的数据库应用程序 水晶报表 Notes: 类型化数据集 利用服务器资源管理器建立数据连接 利用服务器资源管理器可执行的任务如下...格式: DataGridView控件>.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); // 画(填写)单元格内容,相同的内容的单元格只填写第一个

    5K10

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

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

    1.4K10

    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.4K10

    使用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.9K30

    【Shiro】Shiro从小白到大神(三)-权限认证(授权)

    :末尾丢失的部分意味着用户可以访问与该部分对应的所有值。...} } 因为第二个示例说“您必须能够打印到任何打印机,以便执行以下代码块”。...因此,这是一个不正确的检查。 如果当前用户没有能力打印到任何打印机,但他们确实有打印的能力,比如lp7200和epsoncolor打印机。...然而,上面的第二个例子永远不会允许他们打印到lp7200打印机,即使他们已经获得了这种能力! 因此,经验法则是在执行权限检查时使用最特殊的权限字符串。...当然,如果您真的只想执行代码块,如果用户被允许打印到任何打印机(可能),那么第二个方法可能是应用程序中的另一个有效的检查。 您的应用程序将决定什么检查是有意义的,但是一般来说,越具体越好。

    1.6K20
    领券