如何在单独的文件夹中添加资源?

当我尝试通过单击“添加现有项目”在资源设计器中添加资源时,该项目将放在“资源”文件夹中。

问题是,如果我在Resource目录中创建一个新目录并将资源放在那里,我会收到编译错误,指出无法找到这些文件。

我无法将所有资源放在一个文件夹中,因为我必须添加2500个图像,其中一些与其名称相匹配。

您无需在Resources文件夹下添加图像。 您可以将图像添加到任何所需的文件夹,然后将图像的构建操作设置为“嵌入式资源”。 这样,它们将作为资源编译到程序集中。 我不知道是否存在性能问题,当它是大量的图像时…

更新:更详细:

  1. 将文件夹和图像文件作为项目项添加到项目中(以便您可以在解决方案资源管理器中查看每个文件夹及其中的图像)
  2. 将每个图像文件的Build Action属性设置为“Embedded Resource”(您可以同时对多个文件执行此操作;只需选择解决方案资源管理器中的所有图像文件)。

这将导致图像文件作为资源编译到程序集中。 将按照以下模式..每个文件分配一个资源名称: .. 。 您可以使用以下代码加载图像:

 using(Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("..")) { pictureBox1.Image = Image.FromStream(stream); } 

创建一个新的资源文件(在下面的示例中,我将其称为文件夹resx中的Images01)创建一个自定义资源管理器类并将其初始化为指向刚创建的此文件

 ResourceManager rm = new ResourceManager("ROOTNAMESPACE.resx.Images01", System.Reflection.Assembly.GetExecutingAssembly()); 

将方法实现到GetImage

  public static Image GetImage(string fileName) { Stream stream = GetResourceStream(fileName); Image image = null; if (stream != null) { image = Image.FromStream(stream); } return image; } 

将图像添加到此resx文件

然后您可以在代码中使用它,如下所示

 this.picProject.Image = Resources.GetImage("ImageName.png"); 

希望能帮助到你