![](/img/trans.png)
[英]Images not displaying in listview local folder Windows Phone App
[英]Images I dinamically added in a ListView are displaying as a black square, Windows Forms
在通過我存儲在 SQL Server 數據庫中的數據填充 ListView 時,無論我如何解決這個問題,我試圖填充的 imageList 都不會顯示圖像,而是顯示一個黑色方塊,實際圖像應該在那里.
我已經嘗試了所有圖像列表類型和列表視圖上的視圖類型,但它們都以相同的方式失敗。
這是我嘗試填充它的方式:
public ListView List_Of_Albums(ListView LV)
{
LV.Clear();
LV.Columns.Add("Album Name", 233);
LV.View = View.Details;
ImageList imgs = new ImageList();
LV.SmallImageList = imgs;
LV.BringToFront();
imgs.ImageSize = new Size(108, 93);
LV.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
try
{
ConexionDB();
SqlCommand cmd = new SqlCommand("spSelect_Albums", cnx);
cmd.Connection = cnx;
cmd.CommandType = CommandType.StoredProcedure;
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
string[] row =
{
dr.GetValue(2).ToString(),
dr.GetValue(0).ToString(),
dr.GetValue(1).ToString(),
dr.GetValue(3).ToString(),
dr.GetValue(4).ToString(),
dr.GetValue(5).ToString(),
dr.GetValue(6).ToString(),
dr.GetValue(7).ToString(),
dr.GetValue(8).ToString(),
dr.GetValue(9).ToString()
};
try
{
imgs.Images.Add(Image.FromFile(dr.GetValue(4).ToString()));
}
catch (Exception)
{
imgs.Images.Add(Properties.Resources.No_Art);
}
var LVItem = new ListViewItem(row);
LV.Items.Add(LVItem);
}
}
cnx.Close();
return LV;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "Database execution error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return LV;
}
}
然而結果總是這樣:
我已經確認用作路徑的字符串是有效的,如果我將一個垃圾字符串作為源,它確實會給我一個找不到的文件。
你設置了 LVI 的圖像索引了嗎? – TaW
就是這樣,非常感謝,如果有人有類似的問題,這就是我通過使用上面在我的示例中使用的相同 while 循環來分配圖像索引的方式。
public ListView List_Of_Albums(ListView LV)
{
int imgCount = 0; // HERE
LV.Clear();
LV.Columns.Add("Album Name", 333);
LV.View = View.LargeIcon;
ImageList imgs = new ImageList();
LV.LargeImageList = imgs;
LV.BringToFront();
imgs.ImageSize = new Size(108, 93);
LV.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
try
{
ConexionDB();
SqlCommand cmd = new SqlCommand("spSelect_Albums", cnx);
cmd.Connection = cnx;
cmd.CommandType = CommandType.StoredProcedure;
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
string[] row =
{
dr.GetValue(2).ToString(),
dr.GetValue(0).ToString(),
dr.GetValue(1).ToString(),
dr.GetValue(3).ToString(),
dr.GetValue(4).ToString(),
dr.GetValue(5).ToString(),
dr.GetValue(6).ToString(),
dr.GetValue(7).ToString(),
dr.GetValue(8).ToString(),
dr.GetValue(9).ToString()
};
var LVItem = new ListViewItem(row);
LV.Items.Add(LVItem);
try
{
imgs.Images.Add(Image.FromFile(dr.GetValue(4).ToString()));
LV.Items[imgCount].ImageIndex = imgCount; //counts up
}
catch (Exception)
{
imgs.Images.Add(Properties.Resources.No_Art); // no image if it can't find one
LV.Items[imgCount].ImageIndex = -1;
}
imgCount++;
}
}
cnx.Close();
return LV;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "Database execution error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return LV;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.