winforms 如何检索添加到项目的资源文件中存储的资源图像

mkh04yzy  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(151)

我正在尝试将图像添加到ToolStrip。尝试添加图像时,出现错误,提示“dog”不是“ToolStripEvents.My. Resources”的成员。
我已将新的资源文件添加到Visual Studio项目中,并将两个现有图像添加到资源文件中。在解决方案资源管理器中,我看到Resources文件夹中有两个图像(dog.jpg和Euclid.jpg)。
在窗体的设计中,我添加了ToolStrip和一个Button。对于Button click事件,我尝试向ToolStrip添加一个图像:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim atoolstripitem As ToolStripItem
        atoolstripitem = myToolStrip.Items.Add(My.Resources.dog)
    End Sub
End Class

我是否正确添加了图像资源?如果没有,如何正确添加它们以便在ToolStrip中使用它们?

ef1yzkbh

ef1yzkbh1#

当您通过Project -> Add New Item -> Resource File将资源文件添加到项目中时,您必须使用已分配给此新资源文件的名称,该名称也被分配给在相应的[Resource].Designer.xx文件中创建的internalFriend)类对象。
这些资源文件通常创建在项目文件夹结构的根目录中(除非另有指定)。
假设新的资源档已命名为ResourcesExtra:您以ResourcesExtra.SomeResourceName(此处为ResourcesExtra.dog)访问其资源对象
OP尝试使用My.Resources访问资源映像。
My.Resources指向与项目相关联的默认资源文件,该文件存储在VB.Net项目的My Project文件夹中或C#项目的Properties文件夹中。
当然,这个资源文件不包含对存储在另一个资源文件中的图像位置的引用,因此出现了异常。
添加到资源文件中的图像存储在项目的Resources文件夹中(VB.Net和C#项目)。其他类型的资源存储在不同的位置(例如,文件的\Obj\Debug
在这种特定情况下,显然实际上不需要额外的资源文件,因此将图像移动到项目的资源中可能是一个不错的选择(同时删除额外的资源文件)。
但是,对不同的 * 目标 * 使用不同的资源文件可能是一个好主意。
同样,您可以扩展这个概念,将资源移动到一个附属程序集(一个库项目)中,用作项目中所有资源的存储,添加静态(共享)方法来检索这些对象,类似于ResourceManager所做的,但是是以一种自定义(专用)的方式。
资源可以通过名称、索引等来检索,并根据需要来组织,例如,以处理多种语言。

相关问题