我创建了一个类似于ToolboxBitmapAttribute的属性,它允许您将Icon或Image与一个类相关联。
要关联图像,请将资源文件基本名称,类型(以查找程序集)和资源名称传递给属性构造函数。然后,我使用ResourceManager来访问资源:
Dim rm = New ResourceManager(ResourceFileBaseName, passedType.Assembly)
Dim obj = rm.GetObject(resourceName)
这很好,除了我希望选项只传递构造函数中的资源名称,并省略资源文件基名。然后我会从默认资源文件中获取资源。当我说默认资源文件时,我指的是启动Visual Studio时,打开属性页并单击“资源”选项卡。
问题是,在VB.Net中开发时,基本名称是“RootNamespace.Resources”,在C#中开发时,基本名称是“Rootnamespace.Properties.Resources”。
我可以在哪里以编程方式查找默认资源文件的名称?
我能做的是获取所有资源名称的列表:
t.Module.Assembly.GetManifestResourceNames
然后,我可以查找以Resources.resources结尾的名称,并使用它来构建资源文件基名。
然而,这是低效的,但我怀疑这是唯一的方法。答案 0 :(得分:0)
您可以尝试程序集中的所有资源文件,并测试该图标是否可用。
检测默认资源文件非常困难。例如,我总是将我的C#项目的资源文件移动到根命名空间。此外,用户可能故意将图像放在不同的资源文件中。