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

本文关键字:下一步 管理器 工作 按钮 | 更新日期: 2023-09-27 18:35:25

我目前正在用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,我选择第一张图片,下一个(按钮2)只是转到第2张,再次按下并显示第3张,再次显示第4张,...等。

真的在这个上面烧了我的大脑,我只是想不通。

PS:button2上的行只是我尝试过的一些东西。

我知道这不是很多工作(我已经完成),但对于初学者来说,我希望这已经足够了。

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

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

代替OpenFileDialog,请使用FolderBrowserDialog。 这将允许用户选择包含文件的文件夹,而不仅仅是单个文件。 (所以用户有一些期望,操作会涉及整个文件夹,这很好。

在该对话框中,可以使用 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是文件名列表。 请记住,它将是文件夹中的所有文件,因此您可能需要对其进行一些过滤。 搜索模式可以帮助解决这个问题,或者您甚至可以在获取列表后手动过滤列表以应用更复杂的逻辑。

您可以枚举该列表。 例如,也许您还存储当前索引:

IList<string> files;
int currentFileIndex = 0;

然后随时显示"当前"文件:

pictureBox1.ImageLocation = files[currentFileIndex];

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

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