none
Columna umagen en Datagridview RRS feed

  • Pregunta

  • En VB 2010 estoy codificando el despliegue de un datagridview.

    . me.dgridTipo.Columns(0)..................

    .

    . me.dgridTipo.Column(1)............

     

    Ningún problema cuando las columnas son del tipo DataGridViewTextBoxColumn. Pero cómo hacer para que la última columna sea del tipo DataGridViewImageColumn y como asignarle una imagen que tengo en un fichero. Alguna idea?

    Saludos

     

     

     

    sábado, 18 de septiembre de 2010 7:20

Respuestas

  • "Aringo" especificó:

    >  Las columnas las añado en tiempo de ejecución

    Modifica entonces el evento Load que aparece en el ejemplo que te he indicado anteriormente:

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

            ' Creamos una nueva columna del tipo DataGridViewTextBoxColumn
            '
            Dim col1 As New DataGridViewTextBoxColumn()

            ' Creamos una segunda columna del tipo DataGridViewImageColumn
            '
            Dim col2 As New DataGridViewImageColumn()
            Dim cellStyle As DataGridViewCellStyle = col2.DefaultCellStyle

            ' Asignamos el valor Nothing para que no aparezca
            ' el gráfico de error predeterminado.
            '
            cellStyle.NullValue = Nothing

            ' Añadimos las columnas al control DataGridView
            '
            Me.DataGridView1.Columns.AddRange(New DataGridViewColumn() {col1, col2})
          
        End Sub

    Añade las columnas al final del evento Load, tal y como así aparece en el ejemplo.

    Pero para añadir de ésta manera las columnas, también te digo que mejor será que las añadas en tiempo de diseño. :-)

    Recuerda marcar como satisfactorias las respuestas que te estoy ofrenciendo, si las mismas te han resultado útiles. ¿De acuerdo?

     

     


    Enrique Martínez [MS MVP - VB]
    sábado, 18 de septiembre de 2010 9:11
    Moderador

Todas las respuestas

  • "Aringo" preguntó:

    > hacer para que la última columna sea del tipo DataGridViewImageColumn
    > y como asignarle una imagen que tengo en un fichero

    Hola:

    Si las columnas las estás añadiendo en tiempo de diseño, simplemente tienes que indicar que la última columna del control DataGridView sea del tipo DataGridViewImageColumn.

    En cuanto asignarle una imagen a cada celda, tendrás que hacerlo en tiempo de ejecución. El siguiente ejemplo muestra cómo asignarle una imagen cuando se hace clic en una celda de una columna del tipo DataGridViewImageColumn:

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

            Dim cellStyle As DataGridViewCellStyle = DataGridView1.Columns(1).DefaultCellStyle

            ' Asignamos el valor Nothing para que no aparezca
            ' el gráfico de error predeterminado.
            '
            cellStyle.NullValue = Nothing

        End Sub

        Private Sub dataGridView1_CellClick(ByVal sender As Object, _
           ByVal e As DataGridViewCellEventArgs) _
           Handles DataGridView1.CellClick

            ' Si no es la segunda celda, abandonamos el procedimiento
            '
            If (e.ColumnIndex <> 1) Then Return

            ' Referenciamos el objeto DataGridViewImageCell alojado
            ' en la celda de la fila actual.
            '
            Dim cell As DataGridViewImageCell = _
                DirectCast(DataGridView1.Rows(e.RowIndex).Cells(1), DataGridViewImageCell)

            ' Asignamos la imagen al objeto DataGridViewImageCell
            '
            cell.Value = Image.FromFile("C:\Temp\Imagen1.jpg")

        End Sub

        Private Sub DataGridView1_RowsAdded(ByVal sender As Object, _
            ByVal e As DataGridViewRowsAddedEventArgs) _
            Handles DataGridView1.RowsAdded

            ' Referenciamos el objeto DataGridViewImageCell alojado
            ' en la celda de la fila actual.
            '
            Dim cell As DataGridViewImageCell = _
                DirectCast(DataGridView1.Rows(e.RowIndex).Cells(1), DataGridViewImageCell)

            ' Asignamos el valor Nothing a la celda para que no aparezca
            ' el gráfico de error predeterminado
            '
            cell.Value = Nothing

        End Sub

    El ejemplo entiende que la segunda columna (la que tiene índice 1), es del tipo DataGridViewImageColumn. Adapta el ejemplo a tus necesidades.

    Un saludo

     


    Enrique Martínez [MS MVP - VB]
    sábado, 18 de septiembre de 2010 8:37
    Moderador
  • Buenos días Enrique

    Disculpa mi imprecisión en la pregunta. Las columnas las añado en tiempo de ejecución

    Saludos

    sábado, 18 de septiembre de 2010 8:50
  • "Aringo" especificó:

    >  Las columnas las añado en tiempo de ejecución

    Modifica entonces el evento Load que aparece en el ejemplo que te he indicado anteriormente:

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

            ' Creamos una nueva columna del tipo DataGridViewTextBoxColumn
            '
            Dim col1 As New DataGridViewTextBoxColumn()

            ' Creamos una segunda columna del tipo DataGridViewImageColumn
            '
            Dim col2 As New DataGridViewImageColumn()
            Dim cellStyle As DataGridViewCellStyle = col2.DefaultCellStyle

            ' Asignamos el valor Nothing para que no aparezca
            ' el gráfico de error predeterminado.
            '
            cellStyle.NullValue = Nothing

            ' Añadimos las columnas al control DataGridView
            '
            Me.DataGridView1.Columns.AddRange(New DataGridViewColumn() {col1, col2})
          
        End Sub

    Añade las columnas al final del evento Load, tal y como así aparece en el ejemplo.

    Pero para añadir de ésta manera las columnas, también te digo que mejor será que las añadas en tiempo de diseño. :-)

    Recuerda marcar como satisfactorias las respuestas que te estoy ofrenciendo, si las mismas te han resultado útiles. ¿De acuerdo?

     

     


    Enrique Martínez [MS MVP - VB]
    sábado, 18 de septiembre de 2010 9:11
    Moderador
  • Puedes probar este código haber si es lo que necesitas:

    Public

     

    Class Form2

     

    Private imagen As Bitmap = Image.FromFile("C:\frontal.jpg") 'La imagen que tu quieras cargar

     

    Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

     

    Dim imageColumn As DataGridViewImageColumn

    imageColumn =

    New DataGridViewImageColumn()

    imageColumn.Width = imagen.Width

    imageColumn.ImageLayout =

    DataGridViewImageCellLayout.NotSet

    DataGridView1.Columns.Add(imageColumn)

    DataGridView1.AutoSize =

    True

     

    Dim cell As DataGridViewImageCell = CType(DataGridView1.Rows(0).Cells(0), DataGridViewImageCell) 'Los ceros indican primera fila, primera celda

    cell.Value = imagen

     

    End Sub

    End

     

    Class

    Salu2


    nunca te acostarás sin saber una cosa más
    sábado, 18 de septiembre de 2010 9:34
  • Hola

    Rara vez no son satisfactorias tus respuestas

    Un saludo

    sábado, 18 de septiembre de 2010 9:35