我正在为我们公司创建一个应用程序启动器,我想使用TreeNode控件(我们有100个需要结构的网络应用程序),当用户点击一个Node(例如:应用程序1)然后我会喜欢自己运行程序,即应用程序启动器不等待它关闭等。
我该怎么做?我目前所拥有的只是AD中的TreeNode结构,除了它之外没有任何代码:
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
}
非常感谢
答案 0 :(得分: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 :(得分:4)
我建议至少需要双击或Enter
按键来启动应用,而不仅仅是选择。否则,当用户单击以获得焦点或使用箭头键导航树时会发生什么?混乱。
您可以在TreeViewEventArgs中找到受影响的节点:e.Node
Ian已经指出了如何启动流程。
答案 2 :(得分: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