簡體   English   中英

如何動態填充Imagelist(數據庫中的數據)C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM