2010-09-02 185 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