您真正需要做的就是爲每一行分別加載每個值。
下面是一個例子:
首先創建一個列,添加它,並給它一個名稱:
DataGridViewImageColumn imgCol = new DataGridViewImageColumn();
int icIndex = dataGridView1.Columns.Add(imgCol);
dataGridView1.Columns[icIndex].Name = "Image";
現在我對所有行設置的值。我使用了ImageList
,這很好,因爲它速度很快,並且會確保獲得相同尺寸的所有圖像。
當然,您將需要加載正確的圖像。您可能想要通過imageList1.Images.Keys
集合訪問它們。
foreach (DataGridViewRow row in dataGridView1.Rows)
if (row.Index < imageList1.Images.Count) // *
row.Cells["Image"].Value = imageList1.Images[row.Index];
現在每行都會顯示不同的圖像。
根據您的SelectionMode這樣的事情會顯示在PictureBox的圖片:
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
pictureBox1.Image = imageList1.Images[dataGridView1.SelectedRows[0].Index];
}
但是你可能想顯示比DGV
行較大的PB
的Image
?爲此,你可以使用一個第二ImageList
具有較大ImageSize
(高達256×256只),或從磁盤加載圖像,使用Images.Key
屬性..
更新
注意,上面的碼使用簡單而相當脆弱的關係將圖像與行相結合,依靠它們都是完整的並且以相同的順序。
這應該用於測試用戶界面,但在此之後,您應該更換它以獲得更強大的功能。
我添加了一個檢查(*),但是這隻會阻止IndexOutOfRange錯誤時,你有比行更少的圖像..
一個想法可能是涉及與圖像名稱的球隊的名字。不知道您的命名方案我無法提供代碼..
如果您希望整體可編輯,您需要考慮如何以及在何處存儲數據。但這些問題超出了原來的問題範圍。
來源
2016-04-09 14:16:14
TaW
在我的Form1_Load我已經把你提供的代碼的方法是單獨的代碼。我已經使用imageList1.Images.Add(Image.FromFile(@「C:\ Users \ Matthew \ Desktop \ Images \ Liverpool.jpg」))將圖像添加到圖像列表中。但是我得到以下錯誤:System.Windows.Forms.dll中發生類型'System.ArgumentOutOfRangeException'的未處理的異常 其他信息:InvalidArgument ='2'的值對'索引'無效。 –
當然,您需要確保您顯示的每一行都有一個圖像。只有一張圖片,您只能在第一行顯示這一張圖片。下一行,索引= 1將拋出SO異常。您可以添加支票來防止這種情況發生,但最終我希望您爲每支球隊顯示一個徽標,對吧?如果你想你的支票可以測試,看看是否找到合適的圖像,如果沒有加載默認圖像,最好放在索引0 .. – TaW
我有3支隊伍,所以我已經添加3個圖像的名單,但現在我越來越相同的錯誤,但'InvalidArgument ='3'的值不適用於'索引'。' ] –