public Form1() { InitializeComponent(); showControls (treeView1.Nodes, this); } void showControls (TreeNodeCollection target, Control control) { TreeNode node = new TreeNode (); node.Text = control.Name + ":" + control.GetType().Name; node.Tag = control; target.Add (node); foreach (Control c in control.Controls) showControls (node.Nodes, c); } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { propertyGrid1.SelectedObject = e.Node.Tag; }