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