การพิมพ์ค่า Datagridview [ซ้ำ]

Sep 09 2020

เมื่อฉันพิมพ์สิ่งนี้จาก Datagrid ดูค่าต่างๆจะอยู่ด้านบนของกันและกันให้ป้อนคำอธิบายภาพที่นี่

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

คำตอบ

jmcilhinney Sep 09 2020 at 21:19

แน่นอนพวกเขาเป็น คุณกำลังใช้พิกัดเดียวกันสำหรับทุกแถว หากคุณคาดว่าจะพิมพ์แต่ละแถวด้านล่างแถวก่อนหน้าคุณต้องระบุ Y ที่มากกว่าแถวก่อนหน้า โดยทั่วไปคุณจะต้องสร้างพื้นฐานสำหรับเร็กคอร์ดแรกและความสูงของเร็กคอร์ดจากนั้นใช้พิกัด Y สำหรับแต่ละแถวที่เป็นค่าพื้นฐานบวกดัชนีแถวคูณด้วยความสูงเช่น

Dim y0 = 10
Dim rowHeight = 50

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

    'Print at y.
Next