Практическое руководство. Добавление или удаление элемента в коллекции элементов управления во время выполнения
Обновлен: Ноябрь 2007
Стандартными задачами при разработке приложения является задача добавления элементов управления в любой элемент управления контейнерами в формах и их удаление оттуда (например, в элемент управления Panel или GroupBox, либо в саму форму). В процессе разработки можно перетащить элементы управления непосредственно в панель или в группу. Во время выполнения эти элементы управления образуют коллекцию Controls, которая следит за размещаемыми элементами управления.
![]() |
---|
Приведенный ниже пример кода относится к любому элементу управления, который поддерживает коллекцию элементов управления. |
Чтобы добавить элемент управления в коллекцию программными средствами, выполните следующие действия:
Создайте экземпляр элемента управления, который требуется добавить.
Задайте свойства нового элемента управления.
Добавьте элемент управления к коллекции Controls родительского элемента управления.
В приведенном ниже примере кода показано, как создать экземпляр элемента управления Button. Для этого необходима форма с элементом управления Panel и уже существующий метод обработки события NewPanelButton_Click для создаваемой кнопки.
Public NewPanelButton As New Button() Public Sub AddNewControl() ' The Add method will accept as a parameter any object that derives ' from the Control class. In this case, it is a Button control. Panel1.Controls.Add(NewPanelButton) ' The event handler indicated for the Click event in the code ' below is used as an example. Substite the appropriate event ' handler for your application. AddHandler NewPanelButton.Click, AddressOf NewPanelButton_Click End Sub
public Button newPanelButton = new Button(); public void addNewControl() { // The Add method will accept as a parameter any object that derives // from the Control class. In this case, it is a Button control. panel1.Controls.Add(newPanelButton); // The event handler indicated for the Click event in the code // below is used as an example. Substite the appropriate event // handler for your application. this.newPanelButton.Click += new System.EventHandler(this. NewPanelButton_Click); }
Чтобы удалить элементы управления из коллекции программными средствами, выполните следующие действия:
Из события удалите его обработчик. В Visual Basic используйте ключевое слово Оператор RemoveHandler; в Visual C# используйте Оператор -= (справочник по C#).
Для удаления требуемого элемента управления из коллекции Controls панели используйте метод Remove.
Вызовите метод Dispose для освобождения всех ресурсов, используемых элементом управления.
Public Sub RemoveControl() ' NOTE: The code below uses the instance of ' the button (NewPanelButton) from the previous example. If Panel1.Controls.Contains(NewPanelButton) Then RemoveHandler NewPanelButton.Click, AddressOf _ NewPanelButton_Click Panel1.Controls.Remove(NewPanelButton) NewPanelButton.Dispose() End If End Sub
private void removeControl(object sender, System.EventArgs e) { // NOTE: The code below uses the instance of // the button (newPanelButton) from the previous example. if(panel1.Controls.Contains(newPanelButton)) { this.newPanelButton.Click -= new System.EventHandler(this. NewPanelButton_Click); panel1.Controls.Remove(newPanelButton); newPanelButton.Dispose(); } }