2015-11-03 56 views
0

我要做的是:C上的圖片庫

製作一個圖片庫,它有5個按鈕,每個圖片庫都選擇一個圖片文件夾。 。

另外兩個按鈕爲你在文件夾中的下一個和前行我76,它說

說法1:無法從「System.collection.Generic.list」轉換爲字符串

有什麼想法?

這裏的控制檯 http://postimg.org/image/nct5pwdit/

線76表示的圖像:

pictureBox1.Load(semestres[semac].imagen[]); 

我有像6次相同的命令。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

class semestres 
{ 
    public List<string> imagen = new List<string>(); 
    private int _semestre; 
    public int canti; 
    public int actual; 
    public int c; 

    public semestres(int semestre, List<string> imagenes) 
    { 
     _semestre = semestre; 
     imagen = imagenes; 
     c = imagen.Count; 
     actual = 0; 
    } 
    public int semestre 
    { 
     get 
     { 
      return _semestre; 
     } 
     set 
     { 
      c = imagen.Count; 
     } 
    } 
    public int can 
    { 
     get 
     { 
      return c; 
     } 
     set 
     { 
      c = imagen.Count; 
     } 
    } 
} 

namespace Visor 
{ 
    public partial class Form1 : Form 
    { 
     private int cont; 
     private int semac; 
     private int _cant; 
     private int next; 
     private List<semestres> semestres = new List<semestres>(); 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      cont = semestres[semac].actual; 
      cont--; 
      if (cont >= 0) 
      { 
       pictureBox1.Load(semestres[semac].imagen[]); 
       semestres[semac].actual = cont; 
      } 
      else 
      { 
       //  MessageBox("Esta es la primer imagen"); 
       cont = 0; 
       semestres[semac].actual = cont; 
       pictureBox1.Load(semestres[semac].imagen); 
      } 
     } 

     private void button7_Click(object sender, EventArgs e) 
     { 
      cont = semestres[semac].actual; 
      next = semestres[semac].c; 
      cont++; 
      if (cont < next) 
      { 
       pictureBox1.Load(semestres[semac].imagen); 
       semestres[semac].actual = cont; 
      } 
      else 
      { 
       //  MessageBox("Esta es la ultima imagen"); 
       cont--; 
       semestres[semac].actual = cont; 
       pictureBox1.Load(semestres[semac].imagen(cont)); 
      } 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      semac = 0; 
      try 
      { 
       if (semestres[0].c > 0) 
       { 
        cont = semestres[0].actual; 
        pictureBox1.Load(semestres[0].imagen(cont)); 
       } 
      } 
      catch (Exception) 
      { 
       OpenFileDialog file = new OpenFileDialog(); 
       file.InitialDirectory = @"C:\"; 
       file.Filter = "Images (*.BMP; *.JPG; *.GIF)|*.BMP; *.JPG; *.GIF|" + "All files(*.*)|*.*"; 
       file.FilterIndex = 1; 
       file.Multiselect = true; 
       file.RestoreDirectory = true; 
       file.ShowDialog(); 
       string[] imgs = file.FileNames; 
       List<string> imagenes = new List<string>(); 
       foreach (string imagen in imgs) 
       { 
        imagenes.Add(imagen); 
       } 
       semestres.Add(new semestres(1, imagenes)); 
       pictureBox1.Load(imagenes[0]); 
       semestres[0].actual = 0; 
       cont = 0; 
      } 
     } 

     private void button6_Click(object sender, EventArgs e) 
     { 

     } 

     private void btn_3_Click(object sender, EventArgs e) 
     { 

     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private void btn_sal_Click(object sender, EventArgs e) 
     { 

     } 

     private void btn_2_Click(object sender, EventArgs e) 
     { 

     } 
    } 
} 
+1

你能指出哪一行是第76行嗎?真的不想把它算出來...... – bkribbs

+0

74行if(cont> = 0) 75 pictureBox1.Load(semestres [semac] .imagen []); 77 semestres [semac] .actual = cont; 78} –

回答

0

所以,你有這樣的:

pictureBox1.Load(semestres[semac].imagen); 

那麼問題是,imagen畫質是List<string>Picturebox.Load(string)需要string,而不是List<string>。所以你需要從列表中獲取一個字符串,而不是傳遞整個列表。一種方法是:

pictureBox1.Load(semestres[semac].imagen[0]); 

這將加載列表中的第一個圖像。

或者,你可能會試圖做的事:

pictureBox1.Load(semestres[semac].imagen[cont]); 

你只需要確定正確的指標是什麼,你要指定。

+0

謝謝,這很好,現在我得到了邏輯錯誤。祝你有美好的一天。 –

+0

很高興幫助,祝你好運! – bkribbs