【问题标题】:Use string variable as a member of resources使用字符串变量作为资源的成员
【发布时间】:2013-07-03 20:42:20
【问题描述】:

我有以下代码:

Private Sub HomeButtonHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAddClass.MouseEnter, BtnEditClass.MouseEnter, BtnViewClass.MouseEnter
    Dim Name As String = sender.Image & "Hover"
    sender.Image = My.Resources.Name
End Sub

例如,在我的资源中。 BtnAddClass.png 和 BtnAddClassHover.png

我希望将“悬停”附加到发件人姓名的末尾,然后检索图像的正确资源。选择案例不起作用,因为我有很多按钮,示例中只包含 3 个。

【问题讨论】:

  • 什么是典型的sender.Image?是“BtnAddClass.png”吗?你想把它改成“BtnAddClassHover.png”吗?
  • @AndyG,是的,典型的图像是 BtnAddClass.png,然后我将创建另一个函数以从 MouseLeave 上的 BtnAddClassHover.png 恢复为 BtnAddClass.png

标签: windows vb.net member


【解决方案1】:

有很多方法,但这里是一个简单的方法:

Dim Name As String = sender.Image
Name = Name.Replace(".png", "Hover.png")

你不能再使用My.Resources.Name,它可能是:

My.Resources.ResourceManager.GetObject(Name)

但是(资源的)对象名称不包含扩展名“png”,因此您可能需要:

Name = Name.Replace(".png", "Hover")
sender.Image = My.Resources.ResourceManager.GetObject(Name)

【讨论】:

  • “GetObject 不是 Resources 的成员”,有什么想法吗?
  • 仍然没有运气,现在它说“从类型'Bitmap'到类型'String'的转换无效。'
  • 您应该告诉我们错误指的是哪一行。但是,我猜你需要Dim Name As String = sender.Image.toString。如果不是,请重新输入该行并查看Image. 之后出现的内容,可能是名称或文件名。
【解决方案2】:

这样做..

Private Sub HomeButtonHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAddClass.MouseEnter, BtnEditClass.MouseEnter, BtnViewClass.MouseEnter
    Dim btn As Button = CType(Sender,Button)
    Dim Name As String = btn.Image.ToString & "Hover"
    btn.Image = My.Resources.ResourceManager.GetObject(Name)
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2014-03-10
    • 1970-01-01
    相关资源
    最近更新 更多