C#上的图库

时间:2015-11-03 17:27:06

标签: c# image gallery

我要做的是:

制作一个包含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 个答案:

答案 0 :(得分: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]);

您只需确定要尝试指定的正确索引。