0

私は会社のアプリケーション ランチャーを作成しています。ユーザーがノード (例: アプリケーション 1) をクリックすると、TreeNode コントロール (構造を必要とする数百のネットワーク アプリケーションがあります) を使用したいと考えています。独自のプログラム、つまりアプリランチャーは閉じるのを待っていません。

どうすればいいですか?私が現在持っているのは、AD の TreeNode 構造だけで、その背後にコードはありません。

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{


}

どうもありがとう

4

3 に答える 3

4
  1. Enterアプリを起動するには、単なる選択ではなく、少なくともダブルクリックまたはキープレスを要求することをお勧めします。それ以外の場合、ユーザーがクリックしてフォーカスを移したり、矢印キーでツリーをナビゲートしたりするとどうなりますか? 混沌。

  2. TreeViewEventArgs は、影響を受けたノードを見つける場所です。e.Node

  3. Ian は、プロセスを起動する方法をすでに指摘しました。

于 2010-01-29T12:14:10.790 に答える
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クラスの使用を検討してください。

唯一の遅延は、プロセスの開始を待つことです。プログラムの実行中にコードがブロックされることはありません。

于 2010-01-29T12:07:06.700 に答える
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 Classを参照してください。

于 2010-01-29T12:12:22.323 に答える