C# 加载图像数组

C# 加载图像数组,c#,arrays,winforms,image,C#,Arrays,Winforms,Image,我在windows窗体上有一组图像。我想在选中与图像对应的复选框时将图像添加到数组中。每次我选中该框时,它都会显示“FileNotFoundException未处理” 错误出现在“images[i]=Image.FromFile(“radiation.gif”);”行上。文件名是正确的。我会错过什么 提前谢谢 文件名是正确的 您还需要提供文件的正确路径。文件名可能是正确的,但当前目录不是您所期望的 默认情况下,它将尝试从与.exe相同的文件夹加载映像-即:Project\bin\Debug,但这

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

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

提前谢谢

文件名是正确的

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

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


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

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

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

一种方法是,假设您将图像作为项目项,您可以将其生成操作更改为
Content
,并将复制到输出目录设置为
copy if Newer
(可以在项目的属性窗口中找到这些选项)


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

检查文件路径与正在运行的进程的本地目录。您可以执行
MessageBox.Show(directory.GetCurrentDirectory())
查看应用程序运行的目录。不是“始终”,而是“默认”。我试图添加完整的文件路径,但出现语法错误,显示“无法识别的转义序列”。如何解决这个问题?@talbright要么在字符串前面加上
@
,要么在路径分隔符中使用
\`而不是
`.@talbright因此您可以执行类似于
Image.FromFile(@“C:\path\To\radiation.gif”)的操作
Image.FromFile(“C:\\Path\\To\\radiation.gif”)
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++;
    }