c# 当 imageList 绑定到 ListView 时,imageList 第一个图像不显示
c# When imageList bind into ListView, imageList 1st image not displaying
我有一个 Listview
控制器与 imageList
绑定,Listview
项和 Imagelist
图像通过 while 循环添加。 dataReader().
问题是在添加两个项目后,Listview 项目显示正确但第一个图像未显示意味着图像从 2nd
listview 项目开始。我用调试模式检查了每一件事。然后我对 imagelist
感到困惑,因为第一次运行时它显示 COUNT
为 1
然后下一个循环又是 COUNT
变成了 0
下一次它1,2,3,4,5,6
.....等等
private void populate(MySqlDataReader data)
{
//ImageList
ImageList imgList = new ImageList();
//set listview category items as Large icons
listView_Category.View = View.LargeIcon;
imgList.Images.Clear();
//ADD image list into Listview
listView_Category.LargeImageList = imgList;
Application.DoEvents();
int i = 0;
while (data.Read())
{
try
{
imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/" + data.GetString(2)));
}
catch (Exception w)
{
MessageBox.Show(w.Message);
}
imgList.ImageSize = new Size(100, 100);
imgList.ColorDepth = ColorDepth.Depth32Bit;
listView_Category.Items.Add(data.GetString(1), i);
i++;
}
}
我也尝试手动添加图像...当它不起作用时。只是它通过循环添加图像。是语言错误吗?
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-1.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-2.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-3.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-4.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-5.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-6.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-7.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-8.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-9.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-10.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-11.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-12.jpg"));
数据库
请试一试此代码将从文件夹中读取所有文件并将其添加显示在列表视图中。您只需要更改从 DB 读取它的逻辑。
private void Form1_Load(object sender, EventArgs e)
{
var folderPath = @"c:\images\";
DirectoryInfo dir = new DirectoryInfo(folderPath);
var imageList = new ImageList();
foreach (FileInfo file in dir.GetFiles())
{
try
{
imageList.Images.Add(Image.FromFile(file.FullName));
}
catch{
Console.WriteLine("This is not an image file");
}
}
this.listView1.View = View.LargeIcon;
imageList.ImageSize = new Size(128, 128);
this.listView1.LargeImageList = imageList;
for (int j = 0; j < imageList.Images.Count; j++)
{
ListViewItem item = new ListViewItem();
item.ImageIndex = j;
this.listView1.Items.Add(item);
}
}
我有一个 Listview
控制器与 imageList
绑定,Listview
项和 Imagelist
图像通过 while 循环添加。 dataReader().
问题是在添加两个项目后,Listview 项目显示正确但第一个图像未显示意味着图像从 2nd
listview 项目开始。我用调试模式检查了每一件事。然后我对 imagelist
感到困惑,因为第一次运行时它显示 COUNT
为 1
然后下一个循环又是 COUNT
变成了 0
下一次它1,2,3,4,5,6
.....等等
private void populate(MySqlDataReader data)
{
//ImageList
ImageList imgList = new ImageList();
//set listview category items as Large icons
listView_Category.View = View.LargeIcon;
imgList.Images.Clear();
//ADD image list into Listview
listView_Category.LargeImageList = imgList;
Application.DoEvents();
int i = 0;
while (data.Read())
{
try
{
imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/" + data.GetString(2)));
}
catch (Exception w)
{
MessageBox.Show(w.Message);
}
imgList.ImageSize = new Size(100, 100);
imgList.ColorDepth = ColorDepth.Depth32Bit;
listView_Category.Items.Add(data.GetString(1), i);
i++;
}
}
我也尝试手动添加图像...当它不起作用时。只是它通过循环添加图像。是语言错误吗?
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-1.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-2.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-3.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-4.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-5.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-6.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-7.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-8.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-9.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-10.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-11.jpg"));
//imgList.Images.Add(Image.FromFile(@"./" + populateFolder + "/image-12.jpg"));
数据库
请试一试此代码将从文件夹中读取所有文件并将其添加显示在列表视图中。您只需要更改从 DB 读取它的逻辑。
private void Form1_Load(object sender, EventArgs e)
{
var folderPath = @"c:\images\";
DirectoryInfo dir = new DirectoryInfo(folderPath);
var imageList = new ImageList();
foreach (FileInfo file in dir.GetFiles())
{
try
{
imageList.Images.Add(Image.FromFile(file.FullName));
}
catch{
Console.WriteLine("This is not an image file");
}
}
this.listView1.View = View.LargeIcon;
imageList.ImageSize = new Size(128, 128);
this.listView1.LargeImageList = imageList;
for (int j = 0; j < imageList.Images.Count; j++)
{
ListViewItem item = new ListViewItem();
item.ImageIndex = j;
this.listView1.Items.Add(item);
}
}