Imprimindo valor Datagridview [duplicado]

Sep 09 2020

quando eu imprimo isso do Datagridview os valores estão em cima uns dos outros, insira a descrição da imagem aqui

Dim rowCount As Integer = DataGridView6.Rows.Count
For i = 0 To rowCount - 1

    e.Graphics.DrawString("PARTICULARS", ReportBodyFont, Brushes.Black, 70, 300)
    e.Graphics.DrawString("QTY", ReportBodyFont, Brushes.Black, 400, 300)
    e.Graphics.DrawString("AMOUNT", ReportBodyFont, Brushes.Black, 600, 300)

    e.Graphics.DrawString("----------------------------------------------------------", ReportFont, Brushes.Black, 50, 310)
    ''
    e.Graphics.DrawString(DataGridView6.Rows(i).Cells(1).Value, ReportBodyFont, Brushes.Black, 50, 320)
    e.Graphics.DrawString(DataGridView6.Rows(i).Cells(3).Value, ReportBodyFont, Brushes.Blue, 400, 320)
    e.Graphics.DrawString(DataGridView6.Rows(i).Cells(2).Value, ReportBodyFont, Brushes.Black, 600, 320)

Next

Respostas

jmcilhinney Sep 09 2020 at 21:19

Claro que eles são. Você está usando exatamente as mesmas coordenadas para cada linha. Se você espera que cada linha seja impressa abaixo da anterior, você precisa especificar um Y maior que o anterior. De modo geral, você estabeleceria uma linha de base para o primeiro registro e a altura de um registro e, em seguida, usaria uma coordenada Y para cada linha que é essa linha de base mais o índice de linha multiplicado pela altura, por exemplo,

Dim y0 = 10
Dim rowHeight = 50

For rowIndex = 0 To rowCount - 1
    Dim y = y0 + rowIndex * rowHeight

    'Print at y.
Next