C# - 将图像加载到图像列表和列表视图中

时间:2010-09-02 22:30:28

标签: c# winforms image listview

我有一个程序我正在努力加载一些图片并在使用openfiledialog后在列表视图中显示它们。我现在要做的是更进一步,从应用程序目录中的目录“icons”自动加载图像。我不太清楚如何去做,所以我要在这里粘贴我当前的代码,并从那里开始工作......

private void loadImageLibraryToolStripMenuItem_Click(object sender, EventArgs e)
    {
        openFileDialog1.Multiselect = true;
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            if (openFileDialog1.FileNames != null)
            {
                for (int i = 0; i < openFileDialog1.FileNames.Length; i++)
                {
                    addImage(openFileDialog1.FileNames[i]);
                }
            }
            else
                addImage(openFileDialog1.FileName);
        }
    }

    private void addImage(string imageToLoad)
    {
        if (imageToLoad != "")
        {
            imageList1.Images.Add(Image.FromFile(imageToLoad));
            listView1.BeginUpdate();
            listView1.Items.Add(imageToLoad, baseValue++);
            listView1.EndUpdate();
        }
     }

编辑以澄清:提供的代码显示了如何在listview控件中加载和显示图像。我现在要做的是启动应用程序,从程序目录中的文件夹自动加载图像,然后在列表视图中显示它们。

1 个答案:

答案 0 :(得分:2)

没有IDE,我的头顶,所以可能会有错误!试试这个

var files = System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\icons")

文件将是一个字符串数组,其中包含目录中的所有文件,然后您可以使用数组循环播放

openFileDialog1.FileNames

在图标之前可能不需要\,我不记得GetDirectoryName是否从路径中删除尾随\。

您还可以将过滤器传递给GetFiles,以仅返回某些文件类型。

HTH

编辑:我已编辑上面的代码以使用

System.Windows.Forms.Application.ExecutablePath

而不是

System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase

现在测试代码我可以访问一个IDE,看起来CodeBase属性会在file:///前面添加路径,导致我的IDE爆炸,出现错误

不支持URI格式

代码现在可以在我的IDE中运行,您需要确保您的图标目录与可执行文件位于同一目录中,所以在我的情况下.... bin \ debug \

尝试一下,如果仍然失败,请告诉我!