2017-02-21 6 views
0

ich ein winform app in C# habe mit einer datagridview Hexe bekommt Es ist Wert von einer sql Datenbank, aber wenn ich eine Zeile klicken von de datagridview die Daten werden in Textfeldern angezeigt bearbeitet werden. Das Problem ist, dass eine der Spalten, die bearbeitet werden können, ein Bild ist. Ich kann das Bild hochladen und in der Datagrid sehen, aber wenn ich die RowHeader CLIC i einen Fehler aus: „String der eingegebenen Zeichen mit falschem Format“ Der Code ist:Bild von Datagridview picturebox

private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    ID = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString()); 

    MemoryStream ms = new MemoryStream((byte[])dataGridView1.CurrentRow.Cells[2].Value); 
    pictureBox1.Image = Image.FromStream(ms); 
    desc2.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString(); 
    tipo.Text = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString(); 
    prumos.Text = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString(); 
} 

[[enter Bildbeschreibung hier] [1]] [1] Vielen Dank im Voraus,

+0

Auf welche genaue Linie erhalten Sie die Ausnahme? Es scheint mit der 'Convert.ToInt32' mehr als das Bild verwandt zu sein ... –

+0

@OfirWinegarten leider wirft das System keine Ausnahme. Ich bekomme nur den Fehler, das Formular schließt und ich werde zurück zum vorherigen Formular gesendet. – septaug

+0

@OfirWinegarten Ich habe versucht, die Convert-Zeile zu kommentieren und bekomme jetzt den Fehler: Das Objekt vom Typ System.string konnte nicht mit System.byte verknüpft werden. – septaug

Antwort

1

Ihre erste Ausgabe kommt von der Convert.ToInt32 und hat nichts mit Image zu tun. Stellen Sie sicher, dass der Text nur eine Zahl enthält.

kann die zweite Ausgabe mit dem Bild wie folgt geschehen:

var imageCell = (DataGridViewImageCell)dataGridView1.CurrentRow.Cells[2]; 
pictureBox1.Image = (Image)imageCell.Value; 

UPDATE - Die oben ist falsch

Die Frage ist falsch Indizes, wie in den Kommentaren geschrieben: Die richtige Code ist:

MemoryStream ms = new MemoryStream((byte[])dataGridView1.CurrentRow.Cells[0].Value‌​); 
pictureBox1.Image = Image.FromStream(ms); 
+0

Ich habe versucht Ihre Lösung, aber ich bekomme einen Fehler bei der Zeile: pictureBox1.Image = Image.FromStream ((Image) imageCell.Value); kann nicht konvertieren von system.drawings.image zu system.IO.stream – septaug

+0

Hoppla hatte einen Fehler .. jetzt sollte es funktionieren –

+0

Grrr immer noch den gleichen Fehler: \ Ill hochladen einen Screenshot aus dem Formular, vielleicht ist es ein anderer Grund – septaug