如何在.NET中创建和使用资源


192

如何创建可以在程序的各个部分轻松引用和使用的资源?

我的特定问题是我有一个NotifyIcon,我想根据程序的状态更改其图标。这是一个常见的问题,但是我已经苦苦挣扎了很长时间。

Answers:


325

好了,在StackOverflow周围搜索并汇总了各个要点之后(哎呀,我已经很喜欢这个地方了),大多数问题已经超过了这个阶段。我确实设法解决了我的问题。

如何创建资源:

就我而言,我想创建一个图标。无论您要添加哪种类型的数据作为资源,这都是一个相似的过程。

  • 右键单击要向其添加资源的项目。在解决方案资源管理器中执行此操作。从列表中选择“属性”选项。
  • 单击“资源”选项卡。
  • 栏顶部的第一个按钮将让您选择要添加的资源的类型。它应该以字符串开头。我们要添加一个图标,因此单击它,然后从选项列表中选择“图标”。
  • 接下来,移至第二个按钮“添加资源”。您可以添加新资源,或者如果已经制作了图标,也可以添加图标。按照提示选择任何选项。
  • 此时,您可以双击新添加的资源进行编辑。请注意,资源也会显示在解决方案资源管理器中,双击该资源同样有效。

如何使用资源:

太好了,所以我们有了新的资源,并且渴望拥有那些可爱的,不断变化的图标……我们该怎么做?好吧,幸运的是,C#使这变得异常容易。

有一个称为的静态类Properties.Resources,使您可以访问所有资源,因此我的代码最终变得很简单:

paused = !paused;
if (paused)
    notifyIcon.Icon = Properties.Resources.RedIcon;
else
    notifyIcon.Icon = Properties.Resources.GreenIcon;

做完了!完蛋了!当您知道如何时,一切都很简单,不是吗?


谢谢你,一直在寻找完全一样的东西。有没有一种方法可以将.ico文件嵌入可执行文件中,以使它们不会显示为单独的文件?我希望我的问题有道理。问候,
Amc_rtty

1
@Andrei:这就是资源。添加后,它将作为已编译exe的一部分嵌入。
马修·沙利

1
“ ...大多数问题已经超过了这个阶段”-太正确了...感谢您将它们放在一起!我知道这很简单...最后。
roadsunknown

1
附带说明,资源文件在编译时被锁定。因此,在运行时动态更改它们几乎不会更改现有值。如果希望在运行时更改值,请使用配置文件。万一这对任何人都有帮助。
Purusartha'3

1
在VB.NET中,可以通过“ My.Resources.GreenIcon”访问资源
andy

9

上面的代码实际上对我不起作用,正如我对Visual Studio 2010所期望的那样。它不允许我访问Properties.Resources,因为权限问题,它无法访问。我最终不得不更改资源属性中的Persistence设置,然后找到了如何通过Resources.Designer.cs文件访问它的方法,该文件具有一个自动吸气剂,可以让我通过My​​Namespace.Properties.Resources访问该图标。 .NameFromAddingTheResource。这将返回一个图标类型的对象,可以立即使用。


7

上面的方法效果很好。

另一种方法(我在这里假设是Web)是创建您的页面。将控件添加到页面。然后,在处于设计模式时,转到:工具>生成本地资源。资源文件将自动显示在解决方案中,页面中的所有控件都映射到该资源文件中。

要为其他语言创建资源,请在文件名的末尾附加扩展名(Account.aspx.en-US.resx,Account.aspx.es-ES.resx ... etc)之前的4个字符的语言。

要在后台代码中检索特定条目,只需调用此方法:GetLocalResourceObject([resource entry key/name])

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.