2010-09-02 152 views
1

我已经得到了一个程序我正在使用openfiledialog之后加载一些图片并在列表视图中显示它们。我现在想要做的是进一步进一步从应用程序目录中的目录'图标'自动加载图像。林也不太清楚如何去了解它,所以我要去贴在这里我当前的代码,并从那里工作了......C# - 将图像加载到图像列表和列表视图

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控件中。我现在想要做的是在启动应用程序时,从程序目录中的文件夹自动加载图像,然后在列表视图中显示它们。

+0

我们可以假设这是winforms吗?为了将来的参考,请记住,c#只是*语言*,人们也需要了解该平台,即WinForms,WPF,Silverlight,ASP.NET等。 – slugster 2010-09-02 22:39:29

+0

对不起,是的,这是winforms。 – Rekar 2010-09-02 22:43:11

+0

你能澄清一点吗,你只是问你如何将图像从私人应用程序的目录加载到你的应用程序? – 2010-09-02 22:54:02

回答

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测试代码似乎代码库property prepends path with file:///导致我的IDE崩溃,并报出错误说

种URI格式不被支持

代码现在在我的IDE,你需要确保你的图标目录是在相同的目录中的可执行所以在我的情况....斌\调试\

试试这个,如果它仍然不能让我知道!

+0

那么,我试图使用文件变量。我所做的是在form_load事件中,我为文件中的每个项目使用了一个foreach循环,而addImage使用了参数'item',但是一启动程序就会耗尽内存。林不知道我在哪里错了,因为现在,为了测试,我有一个图像在文件夹中。 – Rekar 2010-09-03 00:15:48

+0

看到我的编辑 – OneSHOT 2010-09-03 10:11:50

+0

哇,这很好。如果我意识到那段代码也在那里,我们可能没有经历过所有这些麻烦。 – Rekar 2010-09-03 19:51:22