使用C#中的picturebox浏览目录

本文关键字:浏览 picturebox 中的 使用 | 更新日期: 2023-09-27 18:00:42

im使用visualstudio制作了一个最小的图像查看器,我希望能够从任何目录打开一个图像,并使用箭头键浏览该目录中的所有图像。到目前为止,我的代码包括一个打开图像按钮,但我只想使用文件资源管理器打开该图像,然后循环浏览目录中的所有图像。

    public Form1()
    {
        InitializeComponent();
    }
    private void pictureBox1_Click(object sender, EventArgs e)
    {

    }
    private void openToolStripMenuItem_Click(object sender, EventArgs e)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png, *.gif) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png; *.gif" ;
        if (ofd.ShowDialog()==DialogResult.OK && ofd.FileName.Length > 0)
        {
            pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
            pictureBox1.Image = Image.FromFile(ofd.FileName);
        }
    }
    private void saveToolStripMenuItem_Click(object sender, EventArgs e)
    {
    }

使用C#中的picturebox浏览目录

这里有一篇文章描述了创建一个c#程序来打开一个文件的过程,如果它被设置为默认程序的话。

http://www.c-sharpcorner.com/UploadFile/71c973/associating-a-file-type-with-an-application-in-C-Sharp/

这是一篇关于默认应用程序的MSDN文章,对您阅读可能很有用:https://msdn.microsoft.com/en-us/library/windows/desktop/cc144160(v=vs.85).aspx(此示例使用C++,但它提供的信息可能对您有所帮助。)

祝你好运,如果这能回答你的问题,请告诉我;如果不是你还需要什么。

编辑:

我只是在想你可能会遇到的事情。。。查看这篇关于查找某个文件的当前默认应用程序的文章。(如果你计划分发你的软件,并不是所有用户都希望它自动将自己设置为给定文件类型的默认值。)

查找用于在Windows 上打开特定文件类型的默认应用程序

由于需要要求用户选择目录,因此需要FolderBrowserDialog而不是只选择文件的OpenFileDialog

Directory.GetFiles将允许您提取该目录下的文件列表。注意,它似乎不接受像"*.jpg|*.bmp"这样的多个扩展;然而,这可以通过linq:来解决

images = Directory.GetFiles(dialog.SelectedPath, "*", SearchOption.AllDirectories)
        .Where(x => Regex.IsMatch(Path.GetExtension(x), "(jpg|jpeg|...)$"))
        .ToList();

对于导航,您可以在PictureBoxPreviewKeyDown中添加一个处理程序,并处理左/右箭头或任何其他键来更改图片。


你还需要一些东西来迭代图片。对你来说最简单的是Timer。只需在Tick事件上添加一个事件处理程序:

private int index; // remember to reset this to 0 each time you change the  folder
private List<string> images;
private void Timer1_Tick(object sender, EventArgs e)
{
    index = (index + 1) % images.Length;
    pictureBox1.Image = Image.FromFile(images[index]);
}