0

System.IO.FileNotFoundException运行此代码时出现错误。我是否在代码中做了一些严重错误的事情,还是有一些我还没有想到的小事情?

我已确保所有内容都具有权限,并且文件确实存在并且文件类型正确。

public Form1()
{
    InitializeComponent();

    DirectoryInfo ImgD = new DirectoryInfo("C:/Users/Dan/ImgDirectory/");
    FileInfo[] rgFiles = ImgD.GetFiles("*.jpg");
    foreach (FileInfo fi in rgFiles)
    {
        listBox1.Items.Add(Path.GetFileNameWithoutExtension(fi.Name));
    }
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    pictureBox1.Image = System.Drawing.Image.FromFile(
        @"C:/Users/Dan/ImgDirectory/" + listBox1.SelectedItem.ToString());
}
4

1 回答 1

4

您正在使用不带扩展名的文件名填充列表框。

因此,在这一行中,您需要再次附加扩展名:

pictureBox1.Image = System.Drawing.Image.FromFile(@"C:/Users/Dan/ImgDirectory/" + listBox1.SelectedItem.ToString());

所以它变成了这样:

pictureBox1.Image = System.Drawing.Image.FromFile(@"C:/Users/Dan/ImgDirectory/" + listBox1.SelectedItem.ToString() + ".jpg");

附带说明一下,如果您使用调试断点,则可以轻松检测到此类错误。由于该行是给您带来麻烦的行,因此您应该在此处设置一个断点并开始调试 (F5)。当代码在该断点处停止时,您可以检查 的值@"C:/Users/Dan/ImgDirectory/" + listBox1.SelectedItem.ToString())并且您会发现问题。

于 2013-10-28T20:04:56.063 回答