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;
        }