2010-01-29 7 views
0

Je crée un lanceur d'applications pour notre société et j'aimerais utiliser le contrôle TreeNode (nous avons des centaines d'applications réseau qui ont besoin d'une structure), lorsqu'un utilisateur clique sur un nœud (Exemple: Application 1) alors je voudrais pour lancer le programme par lui-même, c'est-à-dire que le lanceur d'applications n'attend pas qu'il se ferme, etc.C# Commande TreeNode, comment exécuter un programme lorsque je clique sur un noeud?

Comment est-ce que je ferais ceci? Tout ce que j'ai est actuellement la structure TreeNode en l'an sans code derrière elle à part:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 


} 

Un grand merci

Répondre

4

Vous pouvez utiliser la méthode de processus statique Start()

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    // Starts Internet Explorer 
    Process.Start("iexplore.exe"); 

    // Starts the application with the same name as the TreeNode clicked 
    Process.Start(e.Node.Text); 
} 

Si vous souhaitez passer des paramètres aussi, puis regardez en utilisant la classe ProcessStartInfo.

Le seul délai que vous aurez, c'est l'attente du démarrage du processus. Votre code ne bloquera pas pendant que le programme est en cours d'exécution.

1

utilisant le ProcessStartInfo vous laisser plus de contrôle sur l'application

lors de la création de vos nœuds TreeView, placez le chemin complet vers l'application dans chacun des biens TreeNode.Tag et le récupérer pour exécuter votre processus

using System.Diagnostics; 

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    //Retrieving the node data 
    TreeNode myClickedNode = (TreeNode)sender; 

    //The pointer to your new app 
    ProcessStartInfo myAppProcessInfo = new ProcessStartInfo(myClickedNode.Tag); 

    //You can set how the window of the new app will start 
    myAppProcessInfo.WindowStyle = ProcessWindowStyle.Maximized; 

    //Start your new app 
    Process myAppProcess = Process.Start(myAppProcessInfo); 

    //Using this will put your TreeNode app to sleep, something like System.Threading.Thread.Sleep(int miliseconds) but without the need of telling the app how much it will wait. 
    myAppProcess.WaitForExit(); 
} 

Pour toutes les propriétés regarder MSDN ProcessStartInfo Class et MSDN classe Process

+0

+1 pour le code snip – JeffH

4
  1. Je suggère au moins exiger un double-clic o r Enter keypress pour lancer l'application, au lieu de la simple sélection. Sinon, que se passe-t-il lorsque l'utilisateur clique juste pour donner le focus, ou navigue dans l'arbre avec les touches fléchées? Le chaos.

  2. Le TreeViewEventArgs est où vous trouverez ce noeud a été affecté: e.Node

  3. Ian a déjà souligné comment vous pouvez lancer un processus.

+0

+1 c'est un très bon point Jay. Ce serait en effet fou. – Ian