在应用程序中将资源包含在多个表单中的正确方法是什么?

时间:2013-10-24 01:28:13

标签: c# winforms embedded-resource

我有一个现有Form的应用程序,它在顶部的每个ToolStripButton上都有图像。这些图像位于resx文件中,看起来好像只适用于此表单。我想用相同的图像制作另一张表格。

导入这些图像的正确方法是什么,以便我的所有表单都可以使用它们。例如,“保存”和“打开”按钮将位于大多数表单上。

1 个答案:

答案 0 :(得分:2)

在一个大型项目中,我们有一个解决方案,其中包含许多带有用户控件和表单的项目。这就是为什么我们有一个名为Resources的额外项目,它为整个解决方案保存不同类型的资源(单独的资源文件):

  • 字符串(翻译)
  • 图像
  • 属性名称

我们将项目引用到需要资源的解决方案中的每个其他项目。通过这种方式,资源可以单独保存,只要使用相同的资源名称,就可以轻松替换dll并且不会破坏任何内容。

我们还在完整的不同项目(解决方案)中使用dll程序集,我们需要例如相同的图像。如果命名正确(例如Company.Resources.dll - > Company.Resources.Images.Toolbar.Add / Remove / Settings),它非常适合每个新项目。

在您的情况下,可以引用ProjectB中的ProjectA以使用相同的资源(只要项目在同一个解决方案中),但可能并非总是可行(例如,为了避免循环引用)。


创建新的WinForm解决方案(在我的示例中,包含两个项目的解决方案)。添加类库类型的新项目:

Adding resources project

resources 项目添加新资源(在我的示例中为字符串和图像):

adding resources to the resources project

add resources project resource

add texts

为图片添加资源文件:

add images resources

添加一些图片:

adding images to the images resource file

adding images to the file

现在从其他项目中引用资源项目:

reference the resources project

reference resources project

重要 =>要使用程序集外部的资源,您需要将可见性设置为public:

set resources visibility

编译解决方案一次,并使用来自世界各地的参考资源项目:

resources project usage