方法 : コントロールのコレクションに対して実行時にコントロールを追加または削除する

更新 : 2007 年 11 月

アプリケーション開発における一般的なタスクの 1 つに、フォーム上のコンテナ コントロール (PanelGroupBox などのコントロール、またはフォーム自体) へのコントロールの追加および削除があります。デザイン時には、パネルまたはグループ ボックスにコントロールを直接ドラッグできます。実行時には、これらのコンテナ コントロールは Controls コレクションを保持します。それにより、現在どのコントロールが含まれているかを追跡します。

82785s1h.alert_note(ja-jp,VS.90).gifメモ :

次のコード例は、内部にコントロールのコレクションを保持するすべてのコントロールに適用されます。

プログラムによって、コレクションにコントロールを追加するには

  1. 追加するコントロールのインスタンスを作成します。

  2. 新規コントロールのプロパティを設定します。

  3. このコントロールを親コントロールの 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);
    }
    

プログラムによって、コレクションからコントロールを削除するには

  1. イベントからイベント ハンドラを削除します。Visual Basic では、RemoveHandler ステートメント キーワードを使用します。また、Visual C# では、-= 演算子 (C# プログラマーズ リファレンス) を使用します。

  2. Remove メソッドを使用して、パネルの Controls コレクションから目的のコントロールを削除します。

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

参照

参照

Panel

その他の技術情報

Panel コントロール (Windows フォーム)