2009-10-26 4 views
0

J'essaie d'ajouter à mon application des icônes via le code. Lorsque j'exécute mon exécutable à partir du dossier de compilation de débogage/relâchement, cela fonctionne bien. Mais lorsque je déplace mes fichiers exécutables vers d'autres dossiers, il me dit qu'il ne trouve pas les fichiers d'icônes.Ajout d'icônes à l'application

Toute idée comment/où je devrais dire au compilateur d'ajouter ces fichiers à ma version finale exécutable, qu'ils seront visibles.

mon code ressemble que

 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 

merci beaucoup pour l'aide

Répondre

2

Je vous suggère de regarder dans l'ajout d'icônes comme ressources, au lieu de les référencer en tant que fichiers externes.

+0

J'ai ajouté les fichiers aux ressources et j'essaie d'accéder aux icônes comme Me.Icon = New Icon ("LP_V2009.ico") quand je compile tout ok, mais quand je cours de l'emplacement de diff je reçois une erreur avec le chemin . Quand je les ai dans les ressources comment je peux y accéder? –

+0

ok trouvé la solution 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 

D'abord, ce sont compile time conditional statements. Vous ne savez pas si vous vouliez que cela soit évalué au moment de la compilation ou de l'exécution. Deuxièmement, CurDir is considered unreliable pour déterminer le répertoire d'application. Dans VS 2008, vous pouvez utiliser l'espace de noms Mon application (My.Application.Info.DirectoryPath) ou utiliser Reflection pour obtenir le chemin de l'application. Enfin, en tant que répondeur précédent mentionné, la façon la plus fiable/portable de le faire serait d'ajouter les icônes à votre projet en tant que embedded resources. J'espère que cela pourra aider.

EDIT: Le dernier lien que j'ai posté (embedded resources) montre comment faire cela. Voici une méthode de cet article qui récupère une icône intégrée de l'assembly à l'aide de Reflection.

Function GetEmbeddedIcon(ByVal strName As String) As Icon 
    Return New Icon(System.Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream(strName)) 
End Function 

Cela devrait le faire pour vous.

+0

Mais comment puis-je accéder aux fichiers d'application que j'ai ajoutés? Y a-t-il une poignée pour cela? regardez ce que j'ai écrit Adam Maras. –

+0

Vérifiez le code supplémentaire. Si vous n'avez pas vérifié les articles/liens que j'ai publiés, regardez-les définitivement. Ils devraient ouvrir quelques choses. –

+0

J'ai ajouté les icônes à ma ressource du programme. Comment puis-je le convertir en image? Nouvelle icône (My.Resources.LP_V2009c) –