Como: Adicionar ou remover de uma coleção de controles em tempo de execução
Tarefas comuns no desenvolvimento de aplicativos que estão adicionando controles para e removendo os controles de qualquer controle de recipiente em seus formulários (como o Panel ou GroupBox controle, ou até mesmo o próprio formulário). Em tempo de design, controles podem ser arrastadas diretamente em um painel ou grupo de caixa. Em tempo de execução, esses controles mantêm uma Controls coleção, que controla quais controles são colocados neles.
Observação |
---|
O exemplo de código a seguir se aplica a qualquer controle que mantém uma coleção de controles dentro dele. |
Para adicionar um controle a uma coleção programaticamente
Crie uma instância do controle a ser adicionado.
Defina as propriedades do novo controle.
Adicionar o controle para o Controls a coleção do controle pai.
O exemplo de código a seguir mostra como criar uma instância de Button de controle. Ele requer um formulário com um Panel controle e que o método de manipulação de eventos do botão que está sendo criado, NewPanelButton_Click, já existe.
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); }
Para remover os controles de uma coleção programaticamente
Remova o manipulador de eventos do evento. Em Visual Basic, use o Instrução RemoveHandler palavra-chave; in Visual C#, use the -= Operador (TRANSLATION FROM VPE FOR CSHARP Reference).
Use o Remove método para excluir o controle desejado a partir do painel Controls coleção.
Chamar o Dispose método para liberar todos os recursos usados pelo controle.
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(); } }