// При закрытии диалогового окна Properties
        // удаляем элемент управления
        private void DialogOnClosed(object sender, EventArgs e)
        {
            PropertiesAndEventDialog dlg = (PropertiesAndEventDialog)sender;
            Control ctrl = (Control)dlg.SelectedObject;

            ctrl.Dispose();
        }
        private void MenuItemOnClick(object sender, EventArgs e)
        {
            // Получаем информацию о меню Item и о классе, который в нем указан
            ToolStripMenuItem item = sender as ToolStripMenuItem;
            Type type = (Type)item.Tag;

            // Подготовка к созданию объекта заданного типа
            ConstructorInfo ci = type.GetConstructor(Type.EmptyTypes);
            Control         ctrl;

            // Попытка создания объекта заданного типа
            try
            {
                ctrl = (Control)ci.Invoke(null);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Text);
                return;
            }

            // Создаем диалоговое окно с элементом управления PropertyGrid
            PropertiesAndEventDialog dlg = new PropertiesAndEventDialog();

            dlg.Owner          = this;
            dlg.Text           = item.Text + " Property Grid";
            dlg.SelectedObject = ctrl;
            dlg.Closed        += new EventHandler(DialogOnClosed);
            dlg.Show();

            // Если свойству Parent не удается задать значение,
            // это, скорее всего, форма, для которой нужно вызвать Show.
            try
            {
                ctrl.Parent = pnl;
            }
            catch
            {
                ctrl.Show();
            }
        }