如何在vb.net中打印datagridview中选定的列?

如何在vb.net中打印datagridview中选定的列?,vb.net,printing,datagridview,Vb.net,Printing,Datagridview,如何在vb.net中打印datagridview中选定的列? 因为我想在vb.net中打印选定的行,所以这些行具有真实的可见性。 这是我在“PrintDocument1\u PrintPage”中的代码 带有DataGridView1的 作为StringFormat的Dim fmt=新StringFormat(StringFormatFlags.LineLimit) fmt.LineAlignment=StringAlignment.Center fmt.Trimming=StringTrimm

如何在vb.net中打印datagridview中选定的列? 因为我想在vb.net中打印选定的行,所以这些行具有真实的可见性。 这是我在“PrintDocument1\u PrintPage”中的代码

带有DataGridView1的

作为StringFormat的Dim fmt=新StringFormat(StringFormatFlags.LineLimit)
fmt.LineAlignment=StringAlignment.Center
fmt.Trimming=StringTrimming.EllipsisCharacter
尺寸y为单个=190
当mRow<.RowCount时执行
作为DataGridViewRow=.Rows(mRow)的Dim行
尺寸x为单个=50
尺寸h为单个=0
对于行中的每个单元格作为DataGridViewCell
Dim rc As RectangleF=新矩形F(x,y,cell.Size.Width,cell.Size.Height)
e、 图形.绘图矩形(钢笔.黑色,rc.左侧,rc.顶部,rc.宽度,rc.高度)
e、 Graphics.DrawString(DataGridView1.Rows(cell.RowIndex).Cells(cell.ColumnIndex).FormattedValue.ToString(),.Font,Brush.Black,rc,fmt)
x+=钢筋混凝土宽度
h=数学最大值(h,钢筋混凝土高度)
下一个
newpage=False
y+=h
mRow+=1
如果y+h>e.MarginBounds.Bottom,则
e、 HasMorePages=True
mRow-=1
newpage=True
出口接头
如果结束
环
mRow=0
以

-我的问题是,它会打印我的datagridview中的所有行,即使它具有虚假的可见性。

您没有检查该行是否可见。正如您所知,编程语言可以与不可见的对象交互,因此不可见并不意味着您的代码看不到它

您可以在Do While循环中放置一个条件

Do WHile mRow < .RowCount
Dim row as DataGridViewRow = .Rows(mRow)
    If row.Visible then
        'blah blah blah
    EndIf
Loop
Do WHile mRow<.RowCount
作为DataGridViewRow=.Rows(mRow)的Dim行
如果行。可见,则
“废话废话
恩迪夫
环
Do WHile mRow < .RowCount
Dim row as DataGridViewRow = .Rows(mRow)
    If row.Visible then
        'blah blah blah
    EndIf
Loop