我需要动态填充ImageList
。意味着我将image names
存储在数据库表中。但是图像位于项目文件夹(1.jpg, 2.jpg...)
内的类别文件夹中,使用while
循环我尝试将图像添加到ImageList
并绑定到ListView
。
这是我的代码和TABLE。没有错误,但图像没有加载。我不确定图像路径是否正确。我的代码有什么问题,怎么做?
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
项目文件夹
图片文件夹
答案 0 :(得分:0)
试试这个
imgs.Images.Add(Bitmap.FromFile("\\categories\\" + rd.GetString(2)));
可能会帮助您实现它并且下一个while
循环可能是一个问题,因为运行第一个循环已经读取了DB中的所有记录。所以,如果你想要,你可以在第一个循环中包含相同的内容。
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;
答案 1 :(得分:0)
确保根文件目录中包含带文件的类别文件夹。
e.g。如果您在调试模式下构建应用程序,则类别文件夹和文件应位于〜/ 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);
}