C# 프로그램 실행 도중 동적으로 컨트롤 추가 및 제거 하는 방법


원본 출처는 여기서 발췌: https://docs.microsoft.com/ko-kr/dotnet/framework/winforms/controls/how-to-add-to-or-remove-from-a-collection-of-controls-at-run-time



* 추가하기


  1. 추가될 컨트롤의 인스턴스를 만듭니다.

  2. 새 컨트롤의 속성을 설정합니다.

  3. 부모 컨트롤의 Controls 컬렉션에 컨트롤을 추가합니다.

    다음 코드 예제에서는의 인스턴스를 만드는 방법을 보여 줍니다.는 Button 제어 합니다. 포함 하는 폼 필요는 Panel 컨트롤과 하는 단추에 대 한 이벤트 처리 메서드 생성, NewPanelButton_Click, 이미 있습니다.

    C#
    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);  
    }  





* 제거하기


  1. 이벤트에서 이벤트 처리기를 제거합니다. Visual Basic에서 사용 하 여는 RemoveHandler 문 키워드입니다; Visual C#을 사용 하 여는 -= 연산자 (C# 참조)합니다.

  2. Remove 메서드를 사용하여 패널의 Controls 컬렉션에서 원하는 컨트롤을 삭제합니다.

  3. 호출 된 Dispose 메서드 컨트롤에서 사용 하는 모든 리소스를 해제 합니다.

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


Posted by 5CFM
,