1

我在 Windows 窗体上有一组图像。当检查与图像相对应的复选框时,我想将图像添加到数组中。每次我选中该框时,它都会显示“未处理 FileNotFoundException”。

public partial class FrmSignage : Form
{
    Image[] images = new Image[12];
    int i = 0;
    public FrmSignage()
    {
        InitializeComponent();
    }

    private void chkRadiation_CheckedChanged(object sender, EventArgs e)
    {
        images[i] = Image.FromFile("radiation.gif");   
        i++;
    }

错误在“images[i] = Image.FromFile("radiation.gif");" 行上抛出。文件名是正确的。我会错过什么?

提前致谢。

4

3 回答 3

3

文件名是正确的。

您还需要提供文件的正确路径。文件名很可能是正确的,但当前目录不是您所期望的。

默认情况下,它将尝试从与 .exe 相同的文件夹加载图像 - 即:Project\bin\Debug,但这可以在运行时更改。在不指定路径的情况下加载图像是不安全的,因为可以更改当前目录,因此您应该指定完整路径。

System.IO 中的类(例如Path)为构建正确的路径提供了相当多的功能。

于 2012-07-10T19:39:07.490 回答
0

您应该确保路径“radiation.gif”有意义。这将始终检查运行可执行文件的目录。

于 2012-07-10T19:39:16.017 回答
0

问题是找不到相对于正在运行的代码的文件。即使该文件存在于您的环境中,因为它是一个相对路径,它也必须相对于正在运行的代码存在。

一种方法是假设您将图像作为项目项,您可以将其构建操作更改为Content并将副本设置为输出目录Copy if Newer(这些选项可以在项目的“属性”窗口中找到)

您还应该在代码中添加一些错误处理,因为即使您已确保图像在正确的位置,有什么可以阻止您的用户删除图像?

于 2012-07-10T19:39:28.343 回答