Sdílet prostřednictvím


Postupy: Přidání nebo odebrání z kolekce ovládacích prvků za běhu

Běžné úlohy při vývoji aplikací přidávají ovládací prvky do libovolného ovládacího prvku kontejneru a odebírají je z formulářů (například ovládací prvek Panel nebo GroupBox nebo dokonce samotný formulář). V době návrhu lze ovládací prvky přetáhnout přímo na panel nebo skupinové pole. Tyto ovládací prvky v době běhu udržují kolekci Controls, která sleduje, jaké ovládací prvky jsou na nich umístěné.

Poznámka:

Následující příklad kódu se vztahuje na jakýkoli ovládací prvek, který udržuje kolekci ovládacích prvků v něm.

Programové přidání ovládacího prvku do kolekce

  1. Vytvořte instanci ovládacího prvku, který se má přidat.

  2. Nastavte vlastnosti nového ovládacího prvku.

  3. Přidejte ovládací prvek do Controls kolekce nadřazeného ovládacího prvku.

    Následující příklad kódu ukazuje, jak vytvořit instanci Button ovládacího prvku. Vyžaduje formulář s ovládacím prvkem Panel a že metoda pro zpracování událostí pro tlačítko, které se vytváří NewPanelButton_Clickjiž existuje.

    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. Substitute the appropriate event
       // handler for your application.
       this.newPanelButton.Click += new System.EventHandler(this. NewPanelButton_Click);
    }
    

Programové odebrání ovládacích prvků z kolekce

  1. Odeberte obslužnou rutinu z události. V jazyce Visual Basic použijte klíčové slovo RemoveHandler Statement; v jazyce C# použijte operátor -=.

  2. Pomocí metody Remove odstraňte požadovaný ovládací prvek z kolekce Controls panelu.

  3. Voláním metody Dispose uvolněte všechny prostředky používané ovládacím prvku.

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

Viz také