2010-01-29 2 views
0

우리 회사의 응용 프로그램 시작 관리자를 만들고 있는데 사용자가 노드 (예 : 응용 프로그램 1)를 클릭 한 다음 TreeNode 컨트롤 (구조가 필요한 네트워크 응용 프로그램이 100 개)을 사용하고 싶습니다. 앱 런처가 앱을 종료 할 때까지 기다리는 중입니다.C# TreeNode 컨트롤, 노드를 클릭 할 때 프로그램을 어떻게 실행합니까?

어떻게하면됩니까? 내가 현재 가지고 모두에서 떨어져 그 뒤에 어떤 코드 AD에서의 TreeNode 구조입니다 :

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 


} 

많은 감사

답변

4

당신은 정적 가공 방법 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를이 앱

당신의 트 리뷰 노드를 만들 때, 당신의 프로세스를 실행 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(); 
} 
모든 속성에 대한

+0

+1 코드 스 니프 – JeffH

4
  1. 나는 적어도 요구하는 게 좋을 것 MSDN ProcessStartInfo Class 및 MSDN 프로세스 클래스를 보면 O를 두 번 클릭 r Enter 단순한 선택 대신 앱을 실행하려면 keypress를 누르십시오. 그렇지 않으면, 사용자가 단지 클릭하여 포커스를 주거나 화살표 키를 사용하여 트리를 탐색하면 어떻게됩니까? 혼돈.

  2. TreeViewEventArgs는 영향이 있었는지 노드 찾을 수있는 곳입니다 : e.Node

  3. 이안은 이미 프로세스를 시작할 수있는 방법을 지적했다.

+0

+1 그게 좋은 지적입니다. 제이. 그것은 정말로 미쳤을 것입니다. – Ian