¿Cómo puedo mostrar una imagen de un DataGridView en otro PictureBox en un nuevo formulario de Windows?
Lo que estoy tratando de hacer es que una vez que haga clic en una fila en mi DataGridView, haga clic en el botón de vista y se abra una nueva ventana que muestre todos los datos del DataGridView en los cuadros de texto. Ya hice la primera parte, pero no sé cómo hacerlo con las imágenes (tengo 2 columnas de imágenes). ¿Alguien puede ayudarme? Estoy empezando, lo siento. Este es mi código para el botón de vista que abre otra ventana. Las casillas de imagen siempre están en blanco.
Private Sub btnView_Click(sender As Object, e As EventArgs) Handles btnView.Click
If GunaDataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected) > 0 Then
data.txtID.Text = GunaDataGridView1.CurrentRow.Cells(0).Value.ToString
data.txtLN.Text = GunaDataGridView1.CurrentRow.Cells(1).Value.ToString
data.txtFN.Text = GunaDataGridView1.CurrentRow.Cells(2).Value.ToString
data.txtMN.Text = GunaDataGridView1.CurrentRow.Cells(3).Value.ToString
data.txtGen.Text = GunaDataGridView1.CurrentRow.Cells(4).Value.ToString
data.txtNum.Text = GunaDataGridView1.CurrentRow.Cells(5).Value.ToString
data.txtDOB.Text = GunaDataGridView1.CurrentRow.Cells(6).Value.ToString
data.txtAddress.Text = GunaDataGridView1.CurrentRow.Cells(7).Value.ToString
data.txtPlate.Text = GunaDataGridView1.CurrentRow.Cells(8).Value.ToString
data.txtVT.Text = GunaDataGridView1.CurrentRow.Cells(9).Value.ToString
data.txtVB.Text = GunaDataGridView1.CurrentRow.Cells(10).Value.ToString
data.txtVYM.Text = GunaDataGridView1.CurrentRow.Cells(11).Value.ToString
data.txtSP.Text = GunaDataGridView1.CurrentRow.Cells(12).Value.ToString
data.ownerPhoto.Image = GunaDataGridView1.CurrentRow.Cells(13).Value
data.carPhoto.Image = GunaDataGridView1.CurrentRow.Cells(14).Value
data.ShowDialog()
End If
End Sub
davy.ai
Para mostrar las imágenes del DataGridView en los controles PictureBox en la nueva ventana, es necesario convertir los datos de la imagen de la celda del DataGridView en una imagen real utilizando un objeto MemoryStream. Aquí te mostramos cómo puedes modificar tu código para lograr esto:
En este código, primero obtenemos los datos binarios de las columnas de imagen en el DataGridView utilizando la función DirectCast para convertir el valor de la celda en una matriz de bytes. Luego creamos un nuevo objeto MemoryStream y utilizamos su método
FromStream
para convertir la matriz de bytes en un objeto Image que podemos establecer como la propiedad Image del control PictureBox correspondiente en la nueva ventana. Encerramos el código de conversión en un bloqueUsing
para asegurarnos de que el MemoryStream se elimine correctamente después de su uso.