2015-11-03 62 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