2009-10-26 188 views
0

我想通过代码向我的应用程序添加一些图标。将图标添加到应用程序

当我从调试/释放编译文件夹运行我的可执行文件它的效果很好。

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

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

我的代码看起来是

 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

我在资源中添加了文件,我试图访问像Me.Icon =新图标(“LP_V2009.ico”),当我编译所有好的,但是当我从差异位置运行我得到错误路径 。 当我在资源中拥有它们时,我可以如何访问它们? –

+0

ok找到解决方案 http://msdn.microsoft.com/en-us/library/ytt371w5%28VS.80%29.aspx –

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 

这应该为你做。

+0

但我如何访问我添加的应用程序文件? 有一些处理吗? 看看我写的Adam Maras。 –

+0

查看附加代码。如果你还没有签出我发布的文章/链接,那么一定要看看他们。他们应该开放一些东西。 –

+0

我将这些图标添加到了我的程序资源中。 我如何将它转换为图像? 新图标(My.Resources.LP_V2009c) –