[英]How to populate Imagelist dynamically (data from database) C#
我需要動態填充ImageList
。 表示我將image names
存儲在數據庫表中。 但是圖像使用while
循環位於項目文件夾(1.jpg, 2.jpg...)
中的類別文件夾中(1.jpg, 2.jpg...)
我嘗試將圖像添加到ImageList
並綁定到ListView
。
這是我的代碼和表。 沒有錯誤,但圖像未加載。 我不確定圖像路徑是否正確。 我的代碼有什么問題,怎么做?
public void show()
{
ImageList imgs = new ImageList();
imgs.ImageSize = new Size(50,50);
MySqlConnection con = cn.connection();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM categories";
MySqlDataReader rd;
con.Open();
rd = cmd.ExecuteReader();
while (rd.Read())
{
try
{
imgs.Images.Add(Image.FromFile("./categories/" + rd.GetString(2)));
}
catch (Exception e) {
MessageBox.Show(e.Message);
}
}
listView1.SmallImageList = imgs;
while (rd.Read())
{
listView1.Items.Add("asas",rd.GetString(0));
}
}
表
圖像路徑
C:\vb\nishantha\pos3\categories
項目文件夾
圖像文件夾
嘗試這個
imgs.Images.Add(Bitmap.FromFile("\\categories\\" + rd.GetString(2)));
可能會幫助您實現這一目標,而下一個while
循環可能會成為問題,因為運行第一個循環已經從數據庫讀取了所有記錄。 因此,如果您願意,可以在第一個循環本身中包含相同的內容。
listViewItem lvi = new listViewItem();
while (rd.Read())
{
try
{
imgs.Images.Add(Bitmap.FromFile("\\categories\\" + rd.GetString(2)));
lvi.SubItems.Add(rd.GetString(0));
}
catch (Exception e) {
MessageBox.Show(e.Message);
}
}
listView1.Items.Add(lvi);
listView1.SmallImageList = imgs;
確保在目錄的根目錄中有包含文件的category文件夾。
例如,如果您以調試模式構建應用程序,則category文件夾和文件應位於〜/ debug / categories / .. jpg中。 為此,請執行以下步驟:
展開類別文件夾,選擇所有文件->右鍵單擊->屬性-> CopyToOutputDirectory以始終復制。
最后,在用於添加列表視圖中項目的最后一行中,更改以下代碼:
while (rd.Read())
{
listView1.Items.Add("asas",rd.GetString(0));
}
至
for (int j = 0; j < imgs.Images.Count; j++)
{
ListViewItem item = new ListViewItem();
item.ImageIndex = j;
item.Text = "asdf";
this.listView1.Items.Add(item);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.