我正在尝试通过代码向我的应用程序添加一些图标。
当我从调试/发布编译文件夹运行我的可执行文件时,它运行良好。
但是当我将可执行文件移动到其他文件夹时,它告诉我它没有找到图标文件。
任何想法我应该如何/在哪里告诉编译器将这些文件添加到我的最终可执行版本中,它们将是可见的。
我的代码看起来像那样
Private Sub Set_Application_Icon()
Dim Current As String
Dim Parent As DirectoryInfo
'current path is /bin/solution/
Current = Directory.GetCurrentDirectory()
Parent = Directory.GetParent(Current)
ChDir(Parent.FullName)
'/bin
Current = Directory.GetCurrentDirectory()
Parent = Directory.GetParent(Current)
ChDir(Parent.FullName)
'icons located at current directory now
#If WizardVersion = 0 And ViewerVersion = 0 Then
Me.Icon = New Icon(CurDir() & "\" & "LP_V2009c.ico")
#ElseIf WizardVersion = 0 And ViewerVersion = 1 Then
Me.Icon = New Icon(CurDir() & "\" & "LP_V2009v.ico")
#Else
Me.Icon = New Icon(CurDir() & "\" & "LP_V2009.ico")
#End If
End Sub
非常感谢你的帮助
答案 0 :(得分:2)
我建议您考虑将图标添加为资源,而不是将它们作为外部文件引用。
答案 1 :(得分:1)
#If WizardVersion = 0 And ViewerVersion = 0 Then
Me.Icon = New Icon(CurDir() & "\" & "LP_V2009c.ico")
#ElseIf WizardVersion = 0 And ViewerVersion = 1 Then
Me.Icon = New Icon(CurDir() & "\" & "LP_V2009v.ico")
#Else
Me.Icon = New Icon(CurDir() & "\" & "LP_V2009.ico")
#End If
首先,这些是compile time conditional statements。不确定您是否希望在编译时或运行时进行评估。其次,CurDir is considered unreliable确定应用程序目录。在VS 2008中,您可以使用应用程序的My命名空间(My.Application.Info.DirectoryPath),或使用Reflection获取应用程序的路径。最后,正如之前的回答者所提到的,最可靠/最便携的方法是将图标添加到项目embedded resources。希望有所帮助。
编辑:我发布的最后一个链接(embedded resources)显示了如何做到这一点。以下是该文章中使用Reflection从程序集中检索嵌入图标的方法。
Function GetEmbeddedIcon(ByVal strName As String) As Icon
Return New Icon(System.Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream(strName))
End Function
那应该为你做。