c#当imageList绑定到ListView时,imageList第一个图像不显示
一、 我使用c#当imageList绑定到ListView时,imageList第一个图像不显示,c#,listview,c#-4.0,imagelist,C#,Listview,C# 4.0,Imagelist,一、 我使用Listview控制器绑定imageList项目和imageList图像,并通过while循环添加。使用dataReader()。问题在于添加两个项目后,Listview项目显示正确,但第一个图像未显示表示从2ndListview项目开始的图像。我用调试模式检查了每件事。然后我把imagelist弄糊涂了,因为它第一次运行时将COUNT显示为1,然后下一次循环时它的COUNT变为0,下一次它1,2,3,4,5,6。。。。等等 private void populate(MySqlDa
Listview
控制器绑定imageList
项目和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);
}
}
private void Form1\u加载(对象发送方,事件参数e)
{
var folderPath=@“c:\images\”;
DirectoryInfo dir=新的DirectoryInfo(folderPath);
var imageList=新的imageList();
foreach(dir.GetFiles()中的FileInfo文件)
{
尝试
{
imageList.Images.Add(Image.FromFile(file.FullName));
}
抓住{
WriteLine(“这不是图像文件”);
}
}
this.listView1.View=View.LargeIcon;
imageList.ImageSize=新大小(128128);
this.listView1.LargeImageList=imageList;
对于(int j=0;j
并且您确定image1和tweleve位于同名和文件类型相同的文件夹中是的,它们都正确。这是windows窗体应用程序还是wpf?windows窗体应用程序。好的,让我试试……不显示任何内容!。。。但imglist count=12。@user3722956是否将listview1更改为listView\u类别。我用过我的名字,请查查名字是否正确,是否很奇怪。我在本地应用程序上测试了4幅图像,效果很好。你能在更改后更新你使用的代码吗it@user3722956如果你能在谷歌硬盘上分享你的代码,我可以查一查。。我会把它寄出去