Estimados tengo el siguiente problema tengo un proyecto en el cual hice un boton en donde imprime perfectamente un Listview, pero cuando hago un Preview del mismo ListView, tengo la siguiente imagen. Trato de Imprimir desde alli y no puedo. En el código mas abajo podrán ver donde me arroja el error.

El Error: El indice estba fuera del Intervalo. Debe ser un valor no negativo e inferior al tamaño de la coleccion
Nombre del parametro: index
Código:
Default Public ReadOnly Property Item(ByVal index As Integer) As IPrintUtilListView Get If index > MyBase.InnerList.Count Then Throw New ArgumentOutOfRangeException("El índice debe estar entre 0 y " & (MyBase.InnerList.Count - 1).ToString) End If Return DirectCast(MyBase.InnerList(index), IPrintUtilListView) <--- AKA ME ARROJA EL ERROR End Get End Property
Código:
Private Sub btnImprimir_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnImprimir.Click ' Imprimir imprimir(False) End Sub
Código:
Private Sub imprimir(ByVal esPreview As Boolean) ' imprimir o mostrar el PrintPreview ' If prtSettings Is Nothing Then prtSettings = New PrinterSettings End If ' If chkSelAntes.Checked Then If seleccionarImpresora() = False Then Return End If ' If prtDoc Is Nothing Then prtDoc = New PrintDocument AddHandler prtDoc.PrintPage, AddressOf prt_PrintPage End If ' ' resetear la línea actual lineaActual = 0 ' ' la configuración a usar en la impresión prtDoc.PrinterSettings = prtSettings ' If esPreview Then Dim prtPrev As New PrintPreviewDialog prtPrev.Document = prtDoc prtPrev.Text = "Previsualizar datos de " & Título prtPrev.ShowDialog() Else prtDoc.Print() End If End Sub
Código:
' El evento usado mientras se imprime el documento Private Sub prt_PrintPage(ByVal sender As Object, _ ByVal e As PrintPageEventArgs) ' Este evento se produce cada vez que se va a imprimir una página Dim lineHeight As Single Dim yPos As Single = e.MarginBounds.Top Dim leftMargin As Single = e.MarginBounds.Left Dim printFont As System.Drawing.Font ' Asignar el tipo de letra printFont = prtFont lineHeight = printFont.GetHeight(e.Graphics) Dim fontTitulo As New Font("Arial", 20, FontStyle.Bold) e.Graphics.DrawString("Listado de " & Título, fontTitulo, _ Brushes.Black, leftMargin, yPos) yPos += fontTitulo.GetHeight(e.Graphics) ' imprimir la cabecera de la página yPos = Datos(0).CabeceraImpresión(e, printFont, yPos) ' imprimir cada una de las líneas de esta página Do yPos += lineHeight e.Graphics.DrawString(Datos(lineaActual).LineaImpresión, _ printFont, Brushes.Black, leftMargin, yPos) lineaActual += 1 Loop Until yPos >= e.MarginBounds.Bottom _ OrElse lineaActual >= Datos.Count If lineaActual < Datos.Count Then e.HasMorePages = True Else e.HasMorePages = False End If End Sub