加载图像阵列

时间:2012-07-10 19:36:25

标签: c# arrays winforms image

我在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“);”。文件名是正确的。我能错过什么?

提前致谢。

3 个答案:

答案 0 :(得分:3)

  

文件名是正确的。

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

您还应该为代码添加一些错误处理,因为即使您确保它在正确的位置,也会阻止用户删除图像?