从文件夹中获取特定数量的图像

时间:2013-09-08 04:52:17

标签: c# .net

我正在使用此代码获取图片并以pictureboxes特定的儿童形式显示它们,我将为4 5个更多的儿童表单做同样的事情,但我不希望这些图像重复在任何形式或图片框中,我该怎么做?在每张表格上我都有3 pictureboxes

public partial class MainForm : Form
    {
        string LoginName;
        List<PictureBox> pictureBoxes;
        List<String> filesToShow = new List<String>();
        public MainForm(string lognName)
        {
            InitializeComponent();
            this.LoginName = lognName;
            pictureBoxes = new List<PictureBox> {
                pictureBox1,
                pictureBox2,
                pictureBox3
            };
            ShowImages();
        }
        private List<String> GetFilesToShow()
        {
            String str = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            string path = str + "\\Image\\";
            return Directory.GetFiles(path, "*.jpg", SearchOption.TopDirectoryOnly).ToList();
        }
        private void ShowImages()
        {
            List<int> selectedImages = new List<int>();
            foreach (var pictureBox in pictureBoxes)
            {
                if (filesToShow != null && !filesToShow.Any())
                {
                    filesToShow = GetFilesToShow();
                }

                if (filesToShow != null && filesToShow.Any()) // If any files then allow the code to delete the shown images
                {
                    if (filesToShow.Count >= pictureBoxes.Count)
                    {
                        filesToShow.Reverse();
                        for (int i = 1; i < 4; i++)
                        {
                            pictureBox.ImageLocation = filesToShow[i];
                        }                        
                    }                    
                }
            }
        }
}

1 个答案:

答案 0 :(得分:0)

您可以维护所有图片的所有文件名的全局列表(例如在会话变量中)以及当您要将图像添加到图片框时的页面中,将其从全局列表中删除,因此在此在其他页面中它不会重复。

像这样的东西

Session["filenames"] = GetFilesToShow();