使“下一步”按钮在图片管理器中工作

时间:2014-12-26 19:01:25

标签: c# image

我目前正在C#中开展一个关于某些图片排列的小项目。这个项目将包含几个我将尝试解决的功能。事情就是我被卡住了......一开始就让我感到尴尬。 到目前为止,我完成了以下几行代码:

 public partial class Form1 : Form
    {


        public Form1()
        {
            InitializeComponent();

            this.WindowState = FormWindowState.Maximized;
            this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_MouseClick(object sender, MouseEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.ImageLocation = openFileDialog.FileName;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            pictureBox1.ImageLocation = pictureBox1.InitialImage;
        }


    }

所以,第一个按钮会让我能够加载图片。这样可行。问题是我不知道如何使"下一个图片按钮"(Button2)工作。我一直在搜索所有网站,包括昨天这个网站3个小时,但找不到解决方案,至少不是"按钮点击"一。我有一个充满图片的文件夹,500多个,我想按类别组织它们,我稍后会添加一个功能。我想要什么"下一个"按钮要做的是以下。我按下按钮1,我选择了第一张图片,然后按下NEXT(按钮2),再次按下并显示第3张,再次显示第4张,等等。

我真的在这个上绞尽脑汁,我无法弄明白。

P.S:button2上的一行只是我试过的一些东西。

我知道这不是很多工作(我已经做过)但是对于初学者我希望它足够了。

非常感谢您的时间,因为我之前已经回答了问题!

1 个答案:

答案 0 :(得分:0)

使用a FolderBrowserDialog而不是OpenFileDialog。这将允许用户选择包含文件的文件夹,而不仅仅是单个文件。 (因此用户有一些期望操作将涉及整个文件夹,这很好。)

在该对话框中,您可以使用SelectedPath属性获取目录列表。类似的东西:

var files = Directory.EnumerateFiles(folderBrowserDialog.SelectedPath);

事实上,不妨让files成为班级成员:

public partial class Form1 : Form
{
    IList<string> files;

    public Form1()
    {
        InitializeComponent();

        this.WindowState = FormWindowState.Maximized;
        this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

        this.files = new List<string>();
    }

    private void button1_MouseClick(object sender, MouseEventArgs e)
    {
        FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();

        if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
            files = Directory.EnumerateFiles(folderBrowserDialog.SelectedPath).ToList();
    }

}

现在files是文件名列表。请记住,它将是文件夹中的所有文件,因此您可能希望对其进行一些过滤。 search pattern可以提供帮助,或者您甚至可以在获取列表后手动过滤列表以应用更复杂的逻辑。

您可以按照自己喜欢的方式枚举该列表。例如,也许您也存储当前索引:

IList<string> files;
int currentFileIndex = 0;

然后随时显示“当前”文件:

pictureBox1.ImageLocation = files[currentFileIndex];

随时移动到下一个(如果到达末尾,请记住将其重置为第一个索引):

currentFileIndex++;
if (currentFileIndex >= files.Count)
    currentFileIndex = 0;