Foros del Web » Programación para mayores de 30 ;) » .NET »

Error de Index Al Tratar de Imprimir Listview

Estas en el tema de Error de Index Al Tratar de Imprimir Listview en el foro de .NET en Foros del Web. Error de Index Al Tratar de Imprimir ListView Estimados tengo el siguiente problema tengo un proyecto en el cual hice un boton en donde imprime ...
  #1 (permalink)  
Antiguo 09/02/2011, 10:24
 
Fecha de Ingreso: julio-2010
Mensajes: 20
Antigüedad: 13 años, 8 meses
Puntos: 0
Error de Index Al Tratar de Imprimir Listview

Error de Index Al Tratar de Imprimir ListView
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

Etiquetas: index, listview
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:35.