// При закрытии диалогового окна 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(); } }