在窗体运行时,右击快捷菜单栏“打开文件夹”项后,在弹窗中选择一个存有4张.jpg图片的文件夹,点击确定后,程序代码就报错索引超出了数组界限,并且窗体上也没能显示图片应该如何解决?


程序代码如下:



在窗体运行时,右击快捷菜单栏“打开文件夹”项后,在弹窗中选择一个存有4张.jpg图片的文件夹,点击确定后,程序代码就报错索引超出了数组界限,并且窗体上也没能显示图片应该如何解决?


程序代码如下:



关注引自强大而免费的微信小程序:皆我百晓生。
问题出在 ShowPic() 方法中判断 index 的范围时的错误。在该方法中,应该将文件总数 files.Length 改为 files.Length - 1。
修改后的 ShowPic() 方法代码如下:
private void ShowPic()
{
if (index < 0)
index = files.Length - 1;
if (index > files.Length - 1)
index = 0;
picShowPic.Image = Image.FromFile(files[index]);
picShowPic.Tag = files[index];
lblMsg.Text = (index + 1).ToString() + "/" + (files.Length).ToString();
}
此外,还推荐在 ShowPic() 方法中加入对 files 数组为空的判断,以避免空引用异常。
修改后的 ShowPic() 方法完整代码如下:
private void ShowPic()
{
if (files == null || files.Length == 0)
{
return;
}
if (index < 0)
index = files.Length - 1;
if (index > files.Length - 1)
index = 0;
picShowPic.Image = Image.FromFile(files[index]);
picShowPic.Tag = files[index];
lblMsg.Text = (index + 1).ToString() + "/" + (files.Length).ToString();
}
以上是根据提供的代码进行修改的,但是注意到代码中有一个错误:files = Directory.GetFiles(path, ". jpg"); 将 ". jpg" 改为 ".jpg",以确保正确读取文件夹中的图片文件。
代码修改后应该可以正常运行了。