2010-01-29 2 views
0

Я создаю приложение для нашей компании, и я бы хотел использовать элемент управления TreeNode (у нас есть 100-е сетевые приложения, которые нуждаются в структуре), когда пользователь нажимает узел (пример: приложение 1), тогда я хотел бы для запуска программы самостоятельно, т.е. приложение запуска не ждет его закрытия и т. д.C# TreeNode control, как мне запустить программу при щелчке узла?

Как мне это сделать? Все, что я в настоящее время структура TreeNode в AD, без кода позади него, кроме:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 


} 

Большое спасибо

ответ

4

Вы можете использовать статический метод Process 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); 
} 

Если вы хотите передать параметры, а затем посмотрите на класс ProcessStartInfo.

Единственная задержка, которую вы получите, - это ожидание начала процесса. Вы не будете блокировать код во время работы программы.

1

с помощью ProcessStartInfo позволит вам иметь больше контроля над приложением

при создании TreeView узлов, разместить полный путь к приложению внутри каждого из TreeNode.Tag собственности и получить его, чтобы запустить процесс

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(); 
} 

Для всех свойств смотрите на MSDN ProcessStartInfo Class и MSDN Process класса

+0

+1 для кода snip – JeffH

4
  1. Я хотел бы предложить, по крайней мере, требует двойной щелчок о r Enter keypress для запуска приложения вместо простого выбора. В противном случае, что происходит, когда пользователь просто нажимает, чтобы выделить фокус, или перемещается по дереву с помощью клавиш со стрелками? Хаос.

  2. В TreeViewEventArgs где вы находите, что узел был затронут: e.Node

  3. Ян уже указал, как вы можете начать процесс.

+0

+1 Это очень хорошая точка. Джей. Это было бы безумием. – Ian