【问题标题】:c# When imageList bind into ListView, imageList 1st image not displayingc# 当imageList绑定到ListView时,imageList第一张图片不显示
【发布时间】:2017-01-27 08:40:06
【问题描述】:

我有一个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"));

数据库

【问题讨论】:

  • 并且您确定 image1 和 12ve 在具有相同名称和文件类型的文件夹中
  • 是的,他们都是正确的
  • 这是 windows 窗体应用程序还是 wpf ?
  • windows 窗体应用程序。
  • 好的,我试试....

标签: c# listview c#-4.0 imagelist


【解决方案1】:

请试试这个,这段代码会从一个文件夹中读取所有文件,并在列表视图中添加显示它。您只需要更改从 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);
        }
    }

【讨论】:

  • 什么都不显示!...但是 imglist count = 12.
  • @user3722956 您是否将 listview1 更改为 listView_Category 。我用了我的名字,请检查名字是否正确
  • 很奇怪。我用 4 张图片在本地应用程序上进行了测试,效果非常好。更改后可以更新您使用的代码
  • @user3722956 如果你可以在谷歌驱动器上分享你的代码,我可以检查一下
  • 当然..我会..发送它
猜你喜欢
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多