2013-07-03 46 views
0

的成員,我有以下代碼:使用字符串變量作爲資源

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個按鈕。

+0

什麼是典型的'sender.Image'?它是「BtnAddClass.png」,你想改變它爲「BtnAddClassHover.png」? –

+0

@AndyG,是典型的圖像是BtnAddClass.png,然後我將創建另一個函數,以從MouseLeave上的BtnAddClassHover.png恢復爲BtnAddClass.png –

回答

0

有多種方式,但這裏是一個簡單的方法:

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) 
+0

「GetObject不是資源的成員」,任何想法? –

+0

我已經更正了我使用'ResourceManager'的答案。 –

+0

仍然沒有運氣,現在它說「從類型」位圖「轉換爲類型」字符串「無效。 –

0

是否這樣做..

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