2010-02-24 99 views
2

我有一个从Resources.resx加载图像的C#自定义控件。我加载此资源投入到项目的资源,然后访问他们喜欢的:.NET自定义控件Resources.resx

ProjectNamespace.Properties.Resources.resourcename; 

这适用于一个项目,但现在我想用我在多个项目的控制。

处理这个问题的最佳方法是什么?将资源加载到控件.resx中?我如何从那里访问它们?或者我应该以完全不同的方式处理?

回答

2

即使您的控件是从其他项目中使用的,它也应该按原样运行。

由VS生成的代码是ResourceManager类的一个包装,它将控件的程序集作为构造函数参数提供给您。所以,ResourceManager总是知道在哪里寻找资源。

+0

@Timores,谢谢。我的麻烦是,“ProjectNamespace”会改变我包含我的控制的每个项目。我将我的控件作为“链接”添加到项目中,而不是作为参考,因为我希望它内置到DLL中。我不确定如何动态获取“ProjectNamespace”。 – Mark 2010-02-24 17:28:20

+1

我明白了。在这种情况下,您必须忘记VS生成的代码,并自己创建一个ResourceManager实例,并将this.GetType()作为参数。然后,要访问名为resourcename的字符串,请直接调用GetString方法(或其他类型的ResourceManager的其他方法)。 更好的是,创建一个小的帮助类,它模仿VS的一个类。重要的是,它会收到您的控件的类型以获得正确的名称空间。 – Timores 2010-02-25 06:17:25

+0

现货,这工作就像一个魅力。 – Mark 2010-02-26 15:42:01