Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-将图像加载到imagelist和listview中_C#_Winforms_Image_Listview - Fatal编程技术网

C#-将图像加载到imagelist和listview中

C#-将图像加载到imagelist和listview中,c#,winforms,image,listview,C#,Winforms,Image,Listview,我已经得到了一个程序,我的工作加载一些图片,并显示在一个列表视图后,使用openfiledialog。我现在要做的是进一步,从应用程序目录中的“图标”目录自动加载图像。我不太确定该怎么做,所以我要把我当前的代码粘贴到这里,然后从那里开始工作 private void loadImageLibraryToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.Multiselect = true

我已经得到了一个程序,我的工作加载一些图片,并显示在一个列表视图后,使用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();
        }
     }
private void loadImageLibraryToolStripMenuItem\u单击(对象发送方,事件参数e)
{
openFileDialog1.Multiselect=true;
如果(openFileDialog1.ShowDialog()==DialogResult.OK)
{
if(openFileDialog1.FileNames!=null)
{
for(int i=0;i

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

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

var files = System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\icons")
文件将是一个字符串数组,其中包含目录中的所有文件,然后您可以使用该数组按上述方式循环这些文件

openFileDialog1.FileNames
图标前可能不需要\号,我不记得GetDirectoryName是否从路径中删除尾随\号

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

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

System.Windows.Forms.Application.ExecutablePath
而不是

System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
在测试代码时,现在我可以访问IDE了,似乎CodeBase属性在路径前面加了file://,这导致我的IDE出现了一个错误

不支持URI格式

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


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

我们能假设这是winforms吗?为便于将来参考,请记住c#只是一种语言,人们还需要了解平台,即WinForms、WPF、Silverlight、ASP.NET等。对不起,是的,这是WinForms。您能否澄清一点,您只是问如何将图像从专用目录加载到应用程序的ListView中,我尝试使用files变量。我所做的是在form_load事件中,我对文件中的每个项使用foreach循环,并使用参数'item'添加图像,但一旦启动程序,它就会耗尽内存。我不知道我哪里出了问题,因为现在,为了测试,我在文件夹里有一张图片。哇,这很好用。如果我意识到那段代码也在那里,我们可能不会经历所有这些麻烦。