1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 using System.Diagnostics; // 获取系统进程必须所用System.Diagnostics 11 12 namespace WinApp_TreeView 13 { 14 public partial class Form1 : Form 15 { 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20 private void Form1_Load(object sender, EventArgs e) 21 { 22 GetSystemProcess(); 23 } 24 /// <GetSystemProcess>获取当前系统所有正在运行的进程,并在树视图中显示. 25 /// </GetSystemProcess> 26 private void GetSystemProcess() 27 { 28 // 禁用树视图重绘 29 treeView1.BeginUpdate(); 30 // 先构造一个根节点 31 TreeNode root = new TreeNode(); 32 root.Text = "所有进程"; 33 treeView1.Nodes.Add(root); 34 /*********************************************************************** 35 * 【方法1】: 将本机的系统进程名称作为子节点添加到根节点下 36 37 // 获取当前系统正在运行的进程数 38 string[] processs = Process.GetProcesses().Select(p => p.ProcessName).ToArray(); 39 // 遍历获取的进程,并将进程名称作为子节点添加到根节点(所有进程)下 40 foreach (string proc in processs) 41 { 42 treeView1.Nodes[0].Nodes.Add(proc); 43 } 44 45 // 获取正在运行的进程数: 46 label1.Text = "进程数: " + processs.Length.ToString(); 47 48 * 49 ***********************************************************************/ 50 51 /*********************************************************************** 52 * 【方法2】: 将本机的系统进程名称作为子节点添加到根节点下 53 ***********************************************************************/ 54 TreeNode[] treenodes = Process.GetProcesses().Select( p => new TreeNode(p.ProcessName) ).ToArray(); 55 56 treeView1.Nodes[0].Nodes.AddRange(treenodes); 57 58 // 展开所有节点 59 treeView1.ExpandAll(); 60 // 获取所有的子节点个数:true; 只获取根节点个数:false 61 //label1.Text = treeView1.GetNodeCount(true).ToString(); 62 // 启用树视图重绘 63 treeView1.EndUpdate(); 64 } 65 } 66 }