向应用程序添加图标

时间:2009-10-26 10:41:28

标签: vb.net visual-studio visual-studio-2008

我正在尝试通过代码向我的应用程序添加一些图标。

当我从调试/发布编译文件夹运行我的可执行文件时,它运行良好。

但是当我将可执行文件移动到其他文件夹时,它告诉我它没有找到图标文件。

任何想法我应该如何/在哪里告诉编译器将这些文件添加到我的最终可执行版本中,它们将是可见的。

我的代码看起来像那样

        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

非常感谢你的帮助

2 个答案:

答案 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

那应该为你做。