我需要从数据库打印一些表格数据,我决定先将这些数据填充到一个临时的TableLayoutPanel中,以便它能够为我处理可变长度。然后,它被吸引到一个PrintDocument的如下: 如何在绘制之前获取TableLayoutPanel的大小?
Using printImage As New Bitmap(Table.Width, Table.Height) 'Need to know size here
Table.DrawToBitmap(printImage, new Rectangle(0, 0, _
printImage.Width,printImage.Height)); 'But draw is here!
e.Graphics.DrawImage(printImage, New Point(0, PrintPos))
End Using
注意,图像的大小实际上是绘制控件之前声明。这是行不通的,因为tableLayoutPanel的大小只发生在绘图上(我猜是这样)!打印预览中只绘制了部分表格。
我曾试图事先手动设置尺寸如下:
Table.Autosize = False
Table.Size = Table.PreferredSize
但是,只有在调整细胞的情况下返回正确的尺寸,由于长期内容,不发生。在绘制之前是否有其他方法可以获得控件的大小?
试用了一下,SizeChanged将不会发生在所有... – jack3694078 2014-11-24 02:17:31
是否'SizeChanged'事件发生在它的任何祖先(容器)?你可能也想看看'Control.WndProc'方法。 – toddmo 2014-11-25 03:27:30