Alles, was Sie wirklich tun müssen, ist, jeden Wert für jede Zeile einzeln zu laden.
Hier ein Beispiel:
Zuerst habe ich eine Spalte erstellen, fügen Sie es und ihm einen Namen geben:
DataGridViewImageColumn imgCol = new DataGridViewImageColumn();
int icIndex = dataGridView1.Columns.Add(imgCol);
dataGridView1.Columns[icIndex].Name = "Image";
Jetzt stelle ich die Werte für alle Zeilen. Ich benutze eine ImageList
, die schön ist, da es schnell sein wird und sicherstellen wird, dass alle Bilder der gleichen Größe erhalten.
Natürlich müssen Sie die richtigen Bilder laden. Vielleicht möchten sie von der imageList1.Images.Keys
Sammlung zuzugreifen ..
foreach (DataGridViewRow row in dataGridView1.Rows)
if (row.Index < imageList1.Images.Count) // *
row.Cells["Image"].Value = imageList1.Images[row.Index];
Jetzt jede Zeile ein anderes Bild zeigen.
Je nach Selection so etwas wie dies das Bild in einem PictureBox zeigen:
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
pictureBox1.Image = imageList1.Images[dataGridView1.SelectedRows[0].Index];
}
Sie können aber die Image
im PB
größer als in den DGV
Zeilen zeigen? entweder Dazu können Sie ein zweites ImageList
mit einem größeren ImageSize
(bis zu 256x256 nur) oder laden Sie die Bilder von der Festplatte verwenden, mit der Images.Key
Eigenschaft ..
aktualisieren
beachten Sie, dass der Code über verwendet eine vereinfachte und ziemlich zerbrechliche Beziehung, um die Bilder mit den Zeilen zu verbinden, wobei sie sich darauf verlassen, dass sie vollständig und in der gleichen Reihenfolge sind.
Dies sollte zum Testen der Benutzeroberfläche funktionieren, aber danach sollten Sie es für etwas robuster austauschen.
Ich habe einen Scheck hinzugefügt (*), aber dies wird nur die IndexOutOfRange Fehler vermeiden, wenn Sie weniger Bilder als Reihen ..
Eine Idee, die Teamnamen beziehen mit den Bildnamen sein könnte. Ich weiß nicht, wie Ihre Benennungsschemata aussehen.
Und wenn Sie möchten, dass das Ganze editierbar ist, müssen Sie darüber nachdenken, wie und wo Sie Ihre Daten speichern.Aber diese Frage geht über den Umfang der ursprünglichen Frage hinaus.
in meinem Form1_Load habe ich den Code, den Sie zur Verfügung gestellt haben erwarten für die Methode, die separat ist. Ich habe ein Bild zur Imagelist hinzugefügt, indem ich imageList1.Images.Add (Image.FromFile (@ "C: \ Benutzer \ Matthew \ Desktop \ Images \ Liverpool.jpg")) verwendet habe; Allerdings bekomme ich den folgenden Fehler: Eine nicht behandelte Ausnahme des Typs 'System.ArgumentOutOfRangeException' in System.Windows.Forms.dll aufgetreten Zusätzliche Informationen: InvalidArgument = Wert von '2' ist nicht gültig für 'Index'. –
Natürlich müssen Sie sicherstellen, dass Sie für jede angezeigte Zeile ein Bild in der Liste haben. Mit nur einem Bild können Sie nur dieses eine Bild in der ersten Reihe zeigen. Die nächste Zeile mit Index = 1 wird die SO-Ausnahme auslösen. Du kannst Prüfungen hinzufügen, um das zu verhindern, aber letztendlich würde ich erwarten, dass du für jedes Team ein Logo zeigst, oder? Wenn du möchtest, dass dein Bild überprüft wird, ob ein passendes Bild gefunden wird und wenn kein Standardbild geladen wird, setze es am besten auf Index 0 .. – TaW
Ich habe 3 Teams, also habe ich 3 Bilder zur Liste hinzugefügt, aber jetzt bekomme ich der gleiche Fehler, aber 'InvalidArgument = Wert von' 3 'ist nicht gültig für' Index '.' ] –