不讲道理的小李 2021-12-09 14:57 采纳率: 60%
浏览 66
已结题

做了图片查看器,可以打开图片,现在想实现上一张下一张同文件夹内的图片,请大家指导

  private void btnOpen_Click(object sender, EventArgs e)//打开
    {

        OpenFileDialog file = new OpenFileDialog();
        file.InitialDirectory = ".";
        file.Filter = "*.BMP;*.JPG;*.GIF|*.BMP;*.JPG;*.GIF";     // "所有文件(*.*)|*.*";
        file.Multiselect = true;  //鼠标多选
        file.ShowDialog();
        if (file.FileName != string.Empty)
        {
            try
            {
                picNum = 0;
                
                pathname = file.FileName;//获得文件的绝对路径
                picPath = file.FileNames;
                picLength = picPath.Length;

                this.panel_Picture.Load(picPath[0]);

                // this.panel_Picture.Load(pathname);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }
    }
  • 写回答

2条回答 默认 最新

  • 码老头 2021-12-10 14:04
    关注

    点击上一张,下一张的时候分别增加和减小picNum的下标值,然后把picPath[picNum]的图片地址赋值给图片控件即可,伪代码如下:

    private void btnNext_Click(object sender, EventArgs e)
    {
        picNum++;
        // 这里需要处理picNum是否超过了图片集合的最大下标值
        panel_Picture.Image = Image.FromFile(picPath[picNum]);
    }
    

    还是给你写一份完整的源码吧,示例代码如下:

    namespace WinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private int picNum = 0;
            private string pathname = "";
            private string[] picPath;
            private int picLength = 0;
            private void btnOpen_Click(object sender, EventArgs e)
            {
                OpenFileDialog file = new OpenFileDialog();
                file.InitialDirectory = ".";
                file.Filter = "*.BMP;*.JPG;*.GIF;*.PNG|*.BMP;*.JPG;*.GIF;*.PNG";     // "所有文件(*.*)|*.*";
                file.Multiselect = true;  //鼠标多选
                file.ShowDialog();
                if (file.FileName != string.Empty)
                {
                    try
                    {
                        picNum = 0;
                        pathname = file.FileName;//获得文件的绝对路径
                        picPath = file.FileNames;
                        picLength = picPath.Length;
                        this.panel_Picture.Load(picPath[0]);
                        // this.panel_Picture.Load(pathname);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
    
            private void btnPrevious_Click(object sender, EventArgs e)
            {
                picNum--;
                if (picNum < 0)
                {
                    MessageBox.Show("已经是第一张了");
                    picNum = 0;
                    return;
                }
                panel_Picture.Image = Image.FromFile(picPath[picNum]);
            }
    
            private void btnNext_Click(object sender, EventArgs e)
            {
                picNum++;
                if (picNum > picLength - 1)
                {
                    MessageBox.Show("已经是最后一张了");
                    picNum = picLength - 1;
                    return;
                }
                panel_Picture.Image = Image.FromFile(picPath[picNum]);
            }
        }
    }
    

    运行结果如下图:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月15日
  • 已采纳回答 12月14日
  • 创建了问题 12月9日

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题