【问题标题】:C# - Loading images into a imagelist and listviewC# - 将图像加载到图像列表和列表视图中
【发布时间】:2011-04-07 14:28:16
【问题描述】:

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

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();
        }
     }

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

【问题讨论】:

  • 我们可以假设这是winforms吗?为了以后参考,记住c#只是语言,人们还需要了解平台,即WinForms、WPF、Silverlight、ASP.NET等。
  • 对不起,是的,这是winforms。
  • 你能澄清一下吗,你只是问如何将图像从应用程序私有目录加载到 ListView 中?

标签: c# winforms image listview


【解决方案1】:

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

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

files 将是一个字符串数组,其中包含目录中的所有文件,然后您可以像上面一样使用该数组进行循环

openFileDialog1.FileNames

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

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

HTH

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

System.Windows.Forms.Application.ExecutablePath

而不是

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

在测试代码时,我现在可以访问 IDE,似乎 CodeBase 属性在路径前添加了 file:///,这导致我的 IDE 出现错误提示

不支持 URI 格式

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

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

【讨论】:

  • 好吧,我尝试使用 files 变量。我所做的是在 form_load 事件中,我对文件中的每个项目使用 foreach 循环,并使用参数“item”添加图像,但是一旦我启动程序,它就会耗尽内存。我不确定我哪里出错了,因为现在,为了测试,我的文件夹中有 1 张图片。
  • 哇,效果很好。如果我能意识到那段代码也在那里,我们可能不会经历所有这些麻烦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多