【问题标题】:How to retrieve a resource Image stored in a Resource file added to the Project如何检索存储在添加到项目的资源文件中的资源图像
【发布时间】:2022-10-21 04:15:39
【问题描述】:

我正在尝试将图像添加到 ToolStrip。尝试添加图像时,我收到错误消息说“狗”不是“ToolStripEvents.My.Resources”的成员。

我已将一个新资源文件添加到我的 Visual Studio 项目中,并将两个现有图像添加到资源文件中。在解决方案资源管理器中,我看到 Resources 文件夹中有两个图像(dog.jpg 和 Euclid.jpg)。

在我的表单设计中,我添加了 ToolStrip 和一个按钮。对于按钮单击事件,我正在尝试将图像添加到 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 中使用它们?

【问题讨论】:

    标签: .net vb.net winforms resources


    【解决方案1】:

    当您通过Project -> Add New Item -> Resource File 将资源文件添加到项目时,您必须使用您分配给这个新资源文件的名称,该文件也分配给在创建的internal (Friend) 类对象对应的[Resource].Designer.xx 文件。
    这些资源文件通常在项目文件夹结构的根目录中创建(除非另有说明)。

    假设新资源文件已命名为ResourcesExtra:您以ResourcesExtra.SomeResourceName 访问其资源对象(此处为ResourcesExtra.dog

    OP 正在尝试使用My.Resources 访问资源图像。
    My.Resources 指向与项目关联的默认资源文件,存储在 VB.Net 项目中的 My Project 文件夹或 C# 项目中的 Properties 文件夹中。
    当然,此资源文件不包含对存储在另一个资源文件中的图像位置的引用,因此例外。

    添加到资源文件的图像存储在项目的Resources 文件夹(VB.Net 和 C# 项目)中。不同位置的其他类型的资源(例如,ObjDebug 在文件的情况下)


    在这种特定情况下,显然实际上不需要额外的资源文件,因此将图像移动到项目的资源可能是一个不错的选择(同时删除额外的资源文件)。
    但是针对不同的资源使用不同的资源文件目的地可能是个好主意。
    此外,您可以扩展概念并将资源移动到附属程序集(库项目),用作项目中所有资源所需的存储,添加静态(共享)方法来检索这些对象,类似于 @987654321 @ 确实如此,但以自定义(专业)方式。
    可以按名称、索引等检索资源并根据需要进行组织,例如,处理多种语言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 2018-06-03
      • 1970-01-01
      • 2014-10-31
      • 2015-03-14
      • 1970-01-01
      相关资源
      最近更新 更多