2012-12-08 6 views
5

Sto scrivendo il mio launcher di applicazioni basato su C# e, mentre ottengo il popolamento del TreeView e il lancio di scorciatoie dell'applicazione, non riesco a capire come aggiungere le icone come immagini per il TreeView. Il mio codice corrente per ottenere i file è:Impostazione di immagini da icone in TreeView

private void homeMenu_Load(object sender, EventArgs e) 
    { 
     this.ShowInTaskbar = false; 
     if (Directory.Exists((Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName + "\\Roaming\\Launcher"))) 
     { 

     } 
     else 
     { 
      Directory.CreateDirectory(Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName + "\\Roaming\\Launcher"); 
     } 

     DirectoryInfo launcherFiles = new DirectoryInfo(Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName + "\\Roaming\\Launcher"); 

     lstPrograms.Nodes.Add(CreatingDirectoryTreeNode(launcherFiles)); 

     lstPrograms.Sort(); 

    } 

    private static TreeNode CreatingDirectoryTreeNode(DirectoryInfo directoryInfo) 
    { 
     var directoryNode = new TreeNode(directoryInfo.Name); 

     foreach (var directory in directoryInfo.GetDirectories()) 
     { 
      directoryNode.Nodes.Add(CreatingDirectoryTreeNode(directory)); 
     } 

     foreach (var file in directoryInfo.GetFiles()) 
     { 
      directoryNode.Nodes.Add(new TreeNode(file.Name)); 
     } 

     return directoryNode; 
    } 

Il problema principale che ho è l'aggiunta l'icona per ImageList del TreeList al nodo particolare. So che ho bisogno di aggiungere:

lstPrograms.ImageList.Images.Add(Icon.ExtractAssociatedIcon()); 

aggiungere in realtà l'icona per l'elenco delle immagini, come faccio ad ottenere che l'indice particolare dell'immagine, quindi aggiungere alla TreeView con il suo relativo file?

risposta

10

In primo luogo, aggiungere le immagini come risorse e definire l'elenco immagine:

static ImageList _imageList; 
public static ImageList ImageList 
{ 
    get 
    { 
     if (_imageList == null) 
     { 
      _imageList = new ImageList(); 
      _imageList.Images.Add("Applications", Properties.Resources.Image_Applications); 
      _imageList.Images.Add("Application", Properties.Resources.Image_Application); 
     } 
     return _imageList; 
    } 
} 

Quindi, impostare la proprietà ImageList del TreeView:

treeView1.ImageList = Form1.ImageList; 

Poi, quando si creano i nodi, per un nodo specifico, utilizzare:

applicationNode.ImageKey = "Application"; 
applicationNode.SelectedImageKey = "Application";