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

C# - Windows窗体-尝试打印-未绘制任何内容-打印对话框

在C#的Windows窗体应用程序中,如果你尝试打印但未绘制任何内容,并且打印对话框没有显示预期的输出,可能是由于以下几个原因:

基础概念

打印在Windows窗体应用程序中通常涉及以下几个关键组件:

  1. PrintDocument 类:用于管理打印任务。
  2. PrintDialog 类:用于显示打印对话框,允许用户选择打印机和设置打印选项。
  3. PrintPreviewDialog 类:用于显示打印预览对话框。
  4. Graphics 对象:用于在页面上绘制内容。

可能的原因及解决方法

1. PrintDocument.PrintPage事件未正确处理

确保你已经为PrintDocument对象的PrintPage事件添加了处理程序,并且在处理程序中正确绘制了内容。

示例代码:

代码语言:txt
复制
private void buttonPrint_Click(object sender, EventArgs e)
{
    PrintDialog printDialog = new PrintDialog();
    PrintDocument printDocument = new PrintDocument();

    printDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);

    printDialog.Document = printDocument;
    if (printDialog.ShowDialog() == DialogResult.OK)
    {
        printDocument.Print();
    }
}

private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
    // 在这里绘制内容
    Graphics g = e.Graphics;
    g.DrawString("Hello, World!", new Font("Arial", 12), Brushes.Black, 100, 100);

    e.HasMorePages = false; // 如果有多页,设置为true
}

2. Graphics对象未正确获取

确保在PrintPage事件处理程序中正确获取了Graphics对象,并且没有发生异常。

3. 页面设置不正确

检查打印文档的页面设置,确保它们符合预期。

示例代码:

代码语言:txt
复制
printDocument.DefaultPageSettings.PaperSize = new PaperSize("A4", 827, 1169);
printDocument.DefaultPageSettings.Margins = new Margins(50, 50, 50, 50);

4. 打印预览未正确显示

如果你使用PrintPreviewDialog,确保它也正确配置并显示。

示例代码:

代码语言:txt
复制
private void buttonPreview_Click(object sender, EventArgs e)
{
    PrintPreviewDialog previewDialog = new PrintPreviewDialog();
    previewDialog.Document = printDocument;
    previewDialog.ShowDialog();
}

5. 检查异常

在打印过程中添加异常处理,以便更好地诊断问题。

示例代码:

代码语言:txt
复制
try
{
    printDocument.Print();
}
catch (Exception ex)
{
    MessageBox.Show("打印错误: " + ex.Message);
}

应用场景

  • 办公自动化:生成报告和文档。
  • 工业自动化:打印标签、条形码等。
  • 零售业:打印收据和小票。

优势

  • 灵活性:可以自定义打印内容和布局。
  • 集成性:与Windows窗体应用程序无缝集成。
  • 用户友好:通过打印对话框提供良好的用户体验。

通过以上步骤,你应该能够诊断并解决C# Windows窗体应用程序中打印未绘制任何内容的问题。如果问题仍然存在,建议进一步检查代码逻辑和环境配置。

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

相关·内容

c#实战教程_ps初学者入门视频

对话框其实就是窗体,其基类和主窗体一样,是System.Windows.Forms.Form。只是一般对话框只有关闭按钮,没有最大化和最小化按钮,对话框的边界是固定的,不能改变。...=null) streamToPrint.Close();//释放不用的资源 } 4.8.2 打印设置对话框控件PageSetupDialog Windows窗体的PageSetupDialog...控件是一个页面设置对话框,用于在Windows应用程序中设置打印页面的详细信息,对话框的外观如图4.8.2。...(3) 创建子窗体,选择菜单项:项目/添加Windows窗体,弹出对话框,选择Windows窗体,在名称栏输入窗体文件名称:formChild.cs,单击打开按钮,可以见到一个新窗体。...这是因为用户Form窗体用户区内容可能被破坏,例如窗体最小化后,再最大化,菜单被打开再关闭,打开对话框再关闭等,用户区内容被覆盖。

15.7K10

C#之二十三 打印和水晶报表

​C#程序设计及宿舍管理系统实战 ​​ 打印组件介绍 打印是常用的的功能,打印的原理从本质上和Windows窗体画图的原理是一样的,你在窗体里面画了一个圆,那么同样的代码,打印机也会在纸张的同一个位置打印了出一个圆...1、PrintDocument类 PrintDocument组件用于设置一些属性,这些属性说明在基于Windows操作系统的应用程序中要打印什么内容以及打印文档的能力,可将它与PrintDialog组件一起使用来控制文档打印的各个方面...ShowDialog(方法) 显示“打印“对话框 实现过程 1、新建一个Windows应用程序,将其命名为Excell-01,默认主窗体Forml 2、Forml窗体设计时主要用到的控件及说明如下:...本节将通过 两个具体实例介绍如何将Windows窗体中的内容以Word文档或Excels格式显示打印出来。...例如,下面的代码用来指定Excel工作薄中第一行第一列的单元格中的内容为“Excel”: 实现过程: (1) 新建一个Windows应用程序,默认主窗体为Form1. (2)

13700
  • C#学习笔记—— 常用控件说明及其属性、事件

    只能在代码中使用,值为0 时,表示未选中任何字符。 (9)SelectionStart属性:用来获取或设置文本框中选定的文本起始点。...如果当前未选定任何文本,给该属性赋值将把所赋的文本插入到插入点处。如果选定了文本,则给该属性所赋的文本值将替换掉选定文本。...如果未选定任何项,则返回值为1。对于只能选择一项的ListBox控件,可使用此属性确定ListBox中选定的项的索引。...使用PrintDialog控件可以显示Windows标准的【打印】对话框,在该对话框中用户可以选择打印机、选择要打印的页及页码范围等。...需要注意的是:该对话框并不负责具体的打印任务,要想在应用程序中控制打印内容必须使用 PrintDocument 控件。关于这两个控件的详细使用方法读者可参阅相关资料或VisualC#的帮助文件。

    9.9K20

    一个WPF开发的打印对话框-PrintDialogX

    介绍 今天介绍一个WPF开发的打印对话框开源项目-PrintDialogX[1],该开源项目由《WPF开源项目:AIStudio.Wpf.AClient》[2]作者推荐。...用于 C# 的自定义打印对话框,可实时预览。您可以选择打印机并设置份数、方向、颜色、质量、比例、每页张数、双面、纸张尺寸、纸张类型、纸张来源等。它也很优雅。 2....你为什么使用 这是功能强大且美观的自定义打印对话框。在最新版本[3]里它几乎可以提供任何打印设置。它几乎可以做 Windows 默认打印对话框可以做的任何事情。...但它们之间的不同之处在于这个自定义打印对话框具有实时预览功能。您可以在调整设置时预览打印结果。因此,您可以使用它来代替 Windows 默认的打印对话框,这甚至比它更好。 3. 截屏 4....BSD许可证(3-clause BSD license)内容颇为近似,但是赋予软件被授权人更大的权利与更少的限制。

    58530

    java学习之路:32.史上最全的Swing常用组件

    );//设置窗体关闭方式 } public static void main(String[] args) { new zujian().windows(); } } ?...(new JLabel("这是一个对话框"));//在容器中添加标签 setBounds(120,120,100,100);//设置对话框窗体大小 } } ?...JTextArea jr =new JTextArea (); 与文本框不同的是这个可以输入内容: ?...也可以提前显示一些内容,就好比一些软件搜索框默认热门内容: 2.构造一个显示指定文本的新文本区域。 ?...一种做任何事情,只要有一丝可能,就愿意全心全意去投入和尝试的心态。奋斗的心态会调用尽你前半生所有的智慧、资源、技巧和情商去面对问题,还会把你以前积累上的不足,以最直接的方式暴露在你前面。

    7.4K32

    MultiRow发现之旅(六)- 使用MultiRow开发票据应用(附源码)

    在工程中心添加一个windows窗体,命名为“发票窗体”,在设计器中拖放一个MultiRow和一个按钮。 然后添加新模板并且进入新模板的编辑界面。...这表示在打印的时候,打印出当前的日期。我们再手动编辑一下这个字符串,把其中的斜杠替换成“年”,和“月”,并在最后加上“日”: ? 展开Style将ForeColor设为蓝色。...在弹出的边框对话框中选择普通边框,然后选择蓝色,并选择一种虚线设值给左边框: ? 然后确定,关闭对话框。设置后的效果: ? 7. 拖放一个ImageCell,作为Value设为收费专用章的图片。...发票打印 现在来处理发票打印的动作。回到发票窗体的设计器。调整Multirow的大小到刚好能显示全部发票内容。 ? 双击打印按钮,添加事件处理代码: ?...在发票窗体中给发票窗体类添加如下方法: ? 最后,切回主窗体的设计器,查看代码, 找到最开始的“显示打印发票界面()”函数: ? 加入以下代码: ?

    1.2K50

    wxpython 教程 pdf_活学活用wxPython 完整版PDF

    第二部分中的章节讨论wxPython中最常用的部分内容。这些章节包括了对基础构件集合的入门介绍,讨论了标准窗体和对话框,以及对绘图和布局的相关信息。...第八章 将构件放入窗体 所有的wxPython构件都必须放置在窗体或对话框中。该章覆盖了窗体如何运作、有哪几类窗体、如何管理窗体中的构件。...第九章 使用对话框给用户选择 对话框的行为方式和窗体的略为不同。我们在该章中讲述了模式对话框以及标准预定以wxPython对话框如何工作。...同时也包含了特殊菜单,比如检查框、无线菜单等内容。我们也将讨论了键盘快捷键和高效使用菜单的有用的指引。...第十二章 维护基本图形图像 任何图形界面的基本目标都是在屏幕上画线和形状。在wxPython中,有一系列的可用画图工具可供使用。

    1.3K20

    Windows桌面软件开发-Winform桌面客户端开发神器

    其中基础部分已经讲解完毕,可以查看:C#入门教程(一)–.Net平台技术介绍、C#语言及开发工具 这算是学习电脑编程的第二部分,带领你一起开发电脑桌面应用程序。终于可以摆脱黑框控制台应用程序了。...建立Winform项目: 打开Visual Studio 2015 【文件】-【新建】-【项目】 选择Windows窗体应用程序: 进入如下界面: ? 其中选中部分就是我们程序的界面。 ?...不做任何处理,直接点击上方启动查看效果: 启动之后显示了这样一个窗口: ? 是的我们要做的就是,这样一个窗体。这就是Winform。 ? 登录界面实现 先做一个登录功能的实现吧。...直接拖拽工具箱的内容到窗体上就可以了,此时你进行微调,拖拽出来图中效果。 如何改变每个空间显示的内容? ? 选中需要修改内容的控件 ---【鼠标右键】--打开【属性】面板,修改其中Text的值。...登录逻辑 MessageBox.Show()即可弹出对话框进行提示。 ? 最终效果: ?

    6.7K10

    C#复习题 单项选择题

    OpenFileDialog对话框的哪个属性用于表示对话框显示的初始目录( )。...在逻辑意义上,项目包含所有源代码文件、图标、图像、数据文件以及将编译到可执行程序或网站中,或是执行编译所需的任何其他内容。...下面的指令用来计算学生成绩:(1)获得要加的分数;(2)求分数的和;(3)打印总成绩;(4)减去要扣的分数。正确步骤的顺序应该是( )。...ButtonClick事件在用户单击工具栏任何地方时都会触发 96. 在C#中,( )控件是最常用、最简单的文本显示和输入控件,它既可以输出或显示文本信息,也可以接收键盘输入的内容。...在C#中,( )控件是最常用、最简单的文本显示和输入控件,它既可以输出或显示文本信息,也可以接收键盘输入的内容。

    4.4K20

    【云+社区年度征文】PySimpleGUI一个建立在tkinter之上更简单但功能强大的GUI

    ,程序将在命令窗口上打印出窗体上输入控件中的内容,并打印该返回值的类型。...6.1回顾 在前几段文章中,我们分析了用 PySimpleGUI 这个工具包来创建界面的基本方法,并且探讨了一些具体的细节问题,如果读者能一一理解前面的内容,那么接下来我们就要用这个工具包来展示一个常用的文件浏览对话框...对于subprocess这个包的解释已经超过本篇文件的内容范畴,只是为方便理解,需要提一点:对于操作系统的任何命令,操作系统通常是有三个部分在联动,一是stdin,即输入,二是stdout即输出,三是stderr...十、列表的使用及一个简易计算器例子 10.1回顾 在上一段中,我们编写了一个简单的音乐播放器界面和一个脚本执行程序,展示了 PySimpleGUI 强大的功能,在这一段中,我们继续来学习新的控件,并尝试用前面学习的内容编写一个简易计算器程序...当然,图形的绘制我们在另一个有关pygame的教程中会详细介绍更有效率移动图形的方法,在这一篇中,我们只是简单做一尝试即可。

    4.7K12

    WinForm学习

    开发多种类型的程序 C# 语言不仅能开发在控制台下运行的应用程序,也能开发 Windows 窗体应用程序、网站、手机应用等多种应用程序,并且其提供的 Visual Studio 2015 开发工具中也支持多种类型的程序...但在 .NET 平台上使用最多的是 C# 语言。WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。...C# WinForm 编程需要创建「Windows窗体应用程序」项目。.NET 提供了大量 Windows 风格的控件和事件,我们可以直接拿来使用,上手简单,开发快速。...四、快速创建Winform程序 使用VS2017,.NET Framework 4.6.1 1)创建窗体应用程序非常简单,依次选择“文件”一“新建”一“项目”命令,弹出如下图所示的对话框,选择Windows...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.4K11

    结合使用 C# 和 Blazor 进行全栈开发

    Blazor 是将 C# 引入浏览器的 Microsoft 试验框架,正好可以填补欠缺的 C# 一环。...在填写长窗体并单击“提交”后仅看到红色错误返回的日子已经一去不复返了。 在浏览器中运行的 Blazor Web 应用程序可以与 C# 后端服务器共享代码。可以将逻辑放入共享库中,并在前端和后端使用它。...在“新建项目”对话框中,依次单击“ASP.NET Core Web 应用程序”和“确定”,再选择图 1 所示对话框中的“Blazor”图标。单击“确定”。这会创建默认的 Blazor 示例应用程序。...任何模型类都可以继承自它,并自动获取所有验证引擎逻辑。...Miller 是全栈产品开发人员,拥有前端技术(Windows 窗体、Windows Presentation Foundation、Silverlight、ASP.NET、AngularJS/Bootstrap

    6.7K40

    使用Spire.Office for .NET(Word、Excel、PPT、PDF等)的初步感受

    它使开发人员能够打开,创建,修改,转换,打印,查看微软Word ,Excel,PowerPoint,PDF文档。...Spire.Doc for .NET     Spire.Doc for .NET是一个专业的Word .NET library,使用该工具开发人员可以在任意.NET品台(C#,VB.NET,ASP.NET...)上快速创建,读取,写入,转换, 打印Word文档文件。...前几个对话框是一些提示信息以及许可协议。顺便说一句,谁会把所有的警示信息都仔细看一遍?但如果你是作为商业用途准备投资和使用该产品的公司,阅读任何软件公司的许可协议都是应该的。...除了基本的功能比如:绘制多种图形,图片,创建窗体字段,插入页眉页脚,输入数据表,自动对大型表格进行分页外,Spire.PDF for .NET还支持PDF数字签名,将HTML转换成PDF格式,提取PDF

    2.7K30

    Android 关机对话框概率没有阴影故障分析

    ,背景为白色,没有阴影 操作步骤 1.进入短信 2.进入编辑界面 3.随便输入内容,选择返回,弹出对话框。...,然后我们传下此参数给到surfaceflinger里面,它会最终绘制出来,最终体现在屏幕上便是一个对话框下有个阴影效果。...(我们去测试,调试以及打印log,发现此处会出现 mState有时短信对话框在前,有时系统关机在前,如果谁在前面,按照这里逻辑,从后向前计算,会出现前面的将后面的覆盖掉,最终系统判断为前面的需要阴影。)...系统创建(关机对话框和短信对话框的时候)new出来的地址谁大谁小,是不确定的。而此处却用了for有序的去判断了哪个窗体需要阴影,引出问题。...此问题最终只给出方案,未做实质修改 此问题修改建议: 1 关机对话框不要使用FLAG_DIM_BEHIND,自定义的时候指定一个全屏view来实现。

    1K60

    C#之二十 Win Form对话框

    ​C#程序设计及宿舍管理系统实战 ​​ 字体对话框FontDialog Windows窗体 FontDialog 组件是一个预先配置的对话框,该对话框是标准的 Windows“字体”对话框,用于公开系统上当前安装的字体...三、 在文本框中输入文字如下图所示: 颜色对话框 Windows窗体 ColorDialog 组件也是一个预先配置的对话框。...四、 在文本框中输入文字如下图所示: 打开文件对话框 Windows窗体 OpenFileDialog 组件也是一个预先配置的对话框。...文件夹浏览对话框 Windows窗体 FolderBrowserDialog组件的作用正如其名称所述专门提供浏览文件夹功能。...打开“浏览文件夹对话框”按钮 folderBrowserDialog1 浏览文件夹对话框组件 Windows窗体 SaveFileDialog 组件也是一个预先配置的对话框。

    6000

    Win11新版本来了

    太阳谷 2 的预期更新内容 通过太阳谷 2,微软正计划改进 Windows 11 操作系统的传统和新的角落,这包括设置、开始、任务栏、通知中心、Windows Android 子系统等。...新的画图应用将在今年晚些时候通过稳定频道向 Windows 11 正式版用户推出(未链接到任何内部程序),至少会在今年晚些时候预装在 Windows 11 22H2 版本中。...今天更新完之后,你会发现微软将 Win32 程序的打印对话框更新成了新的样式,而使用 CPrintDialog 的桌面应用将以现代打印对话框的形式出现在你的面前,更加契合 Windows 11 的外观基调...微软还对 Windows 11 打印功能进行了改进。如果你有一个新的打印机,微软会自动帮你安装。...微软还改进了 Windows 11 手势功能,并尝试为多指触摸手势引入流畅且令人愉悦的动画。你可以尝试一下新的三指手势功能,例如在最近使用的窗口之间左右滑动和切换。

    1.2K10

    串口助手(简洁版)上位机软件零基础教程( C# + visual studio2017 )(一)

    1.工程的建立 打开vs软件 -》 左上角 “文件”选项 -》 新建 -》 项目 ,弹出对话框如下: 点击visual c# 选项卡 -》 1....选择 Windows 桌面 -》 2.选择Windows 窗体应用(.NET framework) 1.编辑项目名称 – 》 2.定义项目储存位置 -》 3....大家可以自己去尝试更改属性看看效果,不懂可以百度,亲们! 提醒:在属性窗口打开后,点击我们正在设计的串口助手窗体空白处,可设置整个窗体的属性哦!!...在 Items 属性栏中,可添加组合框下拉菜单内容。 注:本次串口助手软件 端口组合框 会在程序中添加下拉菜单内容,不用在属性栏中手动添加。...而波特率组合框 直接在属性中添加下拉菜单内容。 我们设计出如下窗体: 第三,添加单选按钮控件。

    7.1K21
    领券