Hallo Manfred,
Danke für die Antwort hiermit hat es dann funktioniert! ist aber kein automatismus und kann das Bild bei Bedarf nicht ändern.
ich speichere die Bilder (PictureBox) in einen Ordner.
nun soll dann auch entsprechend Datarow in die DGVCells zugewiesen werden und gespeichert werden (Dataset)
hier hole ich erst ein Bild und dann add to DGV
Private Sub Add_Image_To_DataGridView_From_PictureBox_Load(sender As Object, e _
As EventArgs) Handles MyBase.Load
Dim dgvImageColumn As New DataGridViewImageColumn
dgvImageColumn.HeaderText = "image"
dgvImageColumn.ImageLayout = DataGridViewImageCellLayout.Stretch
Dim dgvTextColumn As New DataGridViewTextBoxColumn
dgvTextColumn.HeaderText = "ID"
DataGridView1.Columns.Add(dgvTextColumn)
DataGridView1.Columns.Add(dgvImageColumn)
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
DataGridView1.RowTemplate.Height = 120
DataGridView1.Columns(1).Width = 100
DataGridView1.AllowUserToAddRows = False
Load_Data()
End Sub
Private Sub btn_Browse_Image_Click(sender As Object, e As EventArgs) _
Handles btn_Browse_Image.Click
Dim ofd As New OpenFileDialog
With ofd
.Filter = "Choose Image(*.bmp)|*.bmp|jpe (*.jpe)|*.jpe|jpeg (" & _
"*.jpeg)|*.jpeg|jpg (*.jpg)|*.jpg|jpeg2000 (" & _
"*.jpeg2000)|*.jpeg2000|png (*.png)|*.png|gif (*.gif)|*.gif|Alle" & _
"Dateien(*.*)|*.*"
.FilterIndex = 8
.FileName = ""
End With
If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
PictureBox1.Image = Image.FromFile(ofd.FileName)
End If
TextBox1.Text = ofd.FileName.ToString
End Sub
Private Sub btn_Add_To_DataGridView_Click(sender As Object, e As EventArgs) _
Handles btn_Add_To_DataGridView.Click
Dim ms As New MemoryStream
Try
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
Dim img As Byte()
img = ms.ToArray()
DataGridView1.Rows.Add(TextBox1.Text, img)
Catch ex As Exception
MessageBox.Show(ex.Message.ToString())
End Try
End Sub
Private Sub Load_Data()
Dim dt As New DataTable("Image")
With dt
.Columns.Add("ID", GetType(Integer))
.Columns.Add("Text", GetType(String))
.Columns.Add("Image", GetType(Image))
.Rows.Add(1, "Blume", Image.FromFile("D:\_Bildgalerie\blume.jpg"))
.Rows.Add(2, "Blume", Image.FromFile("D:\_Bildgalerie\blume2.jpeg"))
.Rows.Add(3, "Blume", Image.FromFile("D:\_Bildgalerie\blume3.jpg"))
.Rows.Add(4, "Blume", Image.FromFile("D:\_Bildgalerie\minion.png"))
End With
With DataGridView2
.DataSource = dt
.AllowUserToAddRows = False
End With
End Sub und im CellFormating habe ich die Spalte so angepasst
der Code ist nicht von mir, aber funktioniert
'Image CellFormatting
Private Sub DataGridView2_CellFormatting(sender As Object, e As _
DataGridViewCellFormattingEventArgs) Handles DataGridView2.CellFormatting
If TypeOf CType(sender, DataGridView).Rows(e.RowIndex).Cells( _
e.ColumnIndex) _
Is DataGridViewImageCell Then
If CType(CType(sender, DataGridView).Rows(e.RowIndex).Cells( _
e.ColumnIndex), _
DataGridViewImageCell).Value IsNot DBNull.Value Then
CType(CType(sender, DataGridView).Rows(e.RowIndex).Cells( _
e.ColumnIndex), _
DataGridViewImageCell).ImageLayout = _
DataGridViewImageCellLayout.Zoom
'Column-Breite ist schon fest voreingestellt
CType(sender, DataGridView).Rows(e.RowIndex).Height = CInt( _
CType(sender, _
DataGridView).Columns(e.ColumnIndex).Width / 3 * 4)
End If
End If
End Sub wie kann man das drucken? und wie hole ich mir das aus meinem Bilderordner? |