2013-10-26 42 views
0

我正在使用Winforms創建2D地圖編輯器。使用圖片框在列表框中預覽圖像

我希望能夠使用pictureBox預覽存儲在listBox中的資產的圖像。

我現在的代碼是這樣的。

private void listBox_Assets_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     pictureBox1.Image = Image.FromFile(((FileInfo)listBox_Assets.SelectedItem).FullName); 
    } 

但是,當我選擇一個資產,我得到這個錯誤。

無法將類型爲「System.String」的對象轉換爲鍵入「System.IO.FileInfo」。

我已經搜索了高和低的解決方案,但無法找到這個錯誤的答案,任何幫助將不勝感激。

+0

顯示你的代碼添加項目到你的'ListBox'。 –

+2

填充ListBox的代碼出錯了。你通過傳遞一個字符串而不是FileInfo對象來調用它的Items.Add()。這是好的,只需轉換爲字符串而不是FileInfo。 –

回答

2

您可以像這樣使用列表框中的文件名,並通過檢查文件來保護代碼。

private void listBox_Assets_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string file = IO.Path.Combine("the directory", listBox_Assets.SelectedItem); 
    if (IO.File.Exists(file)) 
     pictureBox1.Image = Image.FromFile(file); 
} 
+1

不需要調用'ToString'雖然 – Anirudha

+0

如何在不調用ToString的情況下做到這一點?或者我需要在圓括號之間添加什麼? –

+0

DonA,這擺脫了我的Casting錯誤,但現在它說無法找到該文件,我該如何將它指向正確的位置? –