如何在vb.net的datagridview中打印所选列? 因为我想在vb.net中打印选定的行,所以行具有真正的可见性。 这是我在“PrintDocument1_PrintPage”中的代码,
With DataGridView1
Dim fmt As StringFormat = New StringFormat(StringFormatFlags.LineLimit)
fmt.LineAlignment = StringAlignment.Center
fmt.Trimming = StringTrimming.EllipsisCharacter
Dim y As Single = 190
Do While mRow < .RowCount
Dim row As DataGridViewRow = .Rows(mRow)
Dim x As Single = 50
Dim h As Single = 0
For Each cell As DataGridViewCell In row.Cells
Dim rc As RectangleF = New RectangleF(x, y, cell.Size.Width, cell.Size.Height)
e.Graphics.DrawRectangle(Pens.Black, rc.Left, rc.Top, rc.Width, rc.Height)
e.Graphics.DrawString(DataGridView1.Rows(cell.RowIndex).Cells(cell.ColumnIndex).FormattedValue.ToString(), .Font, Brushes.Black, rc, fmt)
x += rc.Width
h = Math.Max(h, rc.Height)
Next
newpage = False
y += h
mRow += 1
If y + h > e.MarginBounds.Bottom Then
e.HasMorePages = True
mRow -= 1
newpage = True
Exit Sub
End If
Loop
mRow = 0
End With
- 我的问题是,它打印了我的datagridview中的所有行,即使它有错误的可见性。
答案 0 :(得分:1)
您没有检查该行是否可见。您可能知道,编程语言可以与不可见的对象进行交互,因为它不可见并不意味着您的代码不会看到它。
您可以在Do While循环中添加一个条件...
Do WHile mRow < .RowCount
Dim row as DataGridViewRow = .Rows(mRow)
If row.Visible then
'blah blah blah
EndIf
Loop