编辑:这主要是针对VS2008之前的VS版本,它不允许您更改RE资源的访问级别修改器。其他的选择是外部工具或反射,但仍然没有向设计师公开资源。
DLL资源在运行时非常容易,但不在设计器中。您需要在DLL中编写一个小代理以按名称获取图像。 DLL:
Public Class ResMgr
' depending on what else is in the DLL, can just add to an existing class
Public Function GetImage(imgName As String) As Image
Return My.Resources.ResourceManager.GetObject(imgName)
End Function
'' alternatively declare it SHARED eg
''Public Shared Function/Property GetImage As Image
End Class
应用:
MyRM = New ResMgr
thisImg = New Image
thisImg = MyRM.GetImage(userImg)
如果您构建它作为Shared
方法,它仅仅是:
thisImg = ResMgr.GetImage(userImg)
如果你愿意,你可以在DLL中揭露一个枚举充当资源清单:
Public Enum ResImg
Image1 ' use the names of the images
Backup52
Flag_FR
Flag_RUS
...
End Enum
DLL函数可以对ResImg起作用并使用大的case语句,也可以使用[Enum].GetNames
来转换/获取一组图像资源名称。
您是否让资源文件公开? – VahiD
我不知道你在想什么,但是在myCommonDll.My.Resources.Images和myCommonDll.My.Resources.Icons中有很多文件。如果这是你的意思,我从相关的组合框设置“访问修饰符”为“公共”? –
是的,这就是我的意思,但经过评论,我意识到,即使您将Access Modifier设置为public,您也无法在设计器中使用资源查看其他项目设置图像的资源,但我认为它无法完成 – VahiD