Winforms-如何打印整个表格,包括不可见的部分?我有一个用C#编写的Windows窗体项目。主窗体上有一个TabControl,要求其中一个用户能够打印其中一个TabPage。表格很长,我使用垂直滚动条。整个表格需要能够打印。我尝试先使用DrawToBitmap方法转换为位图,但这仅包括用户可以看到的表单部分。我尝试过的其他一些解决方案涉及屏幕捕获,它有同样的问题。如何打印或获取整个标签页的图像,包括用户只有在向下滚动时才能看到的部分?这对于包括TabControls和TabPages在内的任何控件都相当简单,但对于Forms则不然。您需要做的就是放大相关控件以显示其所有内容。(它们不必在屏幕上实际可见。)这是一个示例:tabControl1.Height=10080;tabPage2.Height=10050;dataGridView1.Height=10000;dataGridView1.Rows.Add(3000);for(inti=0;i这将保存DataGridView、TabPage和TabControl的全部内容。注意:这不适用于不能超过屏幕大小的表。更新:这是保存垂直滚动表单的代码通过将多个位图拼接在一起。它当然可以扩展到包括水平滚动。我在这里为大面板写了一个类似的解决方案。staticvoidsaveLargeForm(Formform,stringfileName){//是的,可能需要一段时间form.Cursor=Cursors.WaitCursor;//分配目标位图和缓冲区位图Bitmaptarget=newBitmap(form.DisplayRectangle.Width,form.DisplayRectangle.Height);位图缓冲区=newBitmap(form.Width,form.Height);//垂直指针inty=0;varvsc=form.VerticalScroll;vsc.Value=0;form.AutoScrollPosition=newPoint(0,0);//滚动量intl=vsc.LargeChange;矩形srcRect=ClientBounds(form);矩形destRect=Rectangle.Empty;布尔完成=假;//我们将使用(GraphicsG=Graphics.FromImage(target)){while(!done){destRect=newRectangle(0,y,srcRect.Width,srcRect.Height);在大位图上绘制Gform.DrawToBitmap(buffer,newRectangle(0,0,form.Width,form.Height));G.DrawImage(buffer,destRect,srcRect,GraphicsUnit.Pixel);intv=vsc.Value;vsc.Value=vsc.Value+l;form.AutoScrollPosition=newPoint(form.AutoScrollPosition.X,vsc.Value+l);intdelta=vsc.Value-v;done=delta它使用辅助函数来确定虚拟客户端矩形的净大小,即不包括边框、标题和滚动条:以上是C#学习教程:Winforms-如何打印整个表单,包括不可见的部分?分享的所有内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注---staticRectangleClientBounds(Formf){Rectanglerc=f.ClientRectangle;矩形rb=f.Bounds;intsw=SystemInformation.VerticalScrollBarWidth;varvsc=f.VerticalScroll;intbw=(rb.Width-rc.Width-(vsc.Visible?sw:0))/2;intth=(rb.Height-rc.Height)-bw*2;returnnewRectangle(bw,th+bw,rc.Width,rc.Height);}本文收集自网络,不代表立场。明源:
