내 mainform에 usercontrols를 추가하는 함수를 만들려고합니다. 나는이 함수를 usercontrols에서도 사용할 수 있기를 원하기 때문에 정적으로 만들고있다.winforms의 정적 메서드에서 usercontrols를 추가하는 방법은 무엇입니까?
내 문제는 정적 인 경우 this.Controls.Add(ucontrol);
을 사용할 수 없다는 것입니다. ActiveForm.Controls.Add(ucontrol);
으로 변경하려고했지만 ActiveForm이 NULL이고 컨트롤 속성이 없습니다 (예외가 발생 함).
업데이트 # 1 :
MainForm ref_to_mainform_to_gain_access_to_functions = (MainForm)Parent;
ref_to_mainform_to_gain_access_to_functions.DisplayControl(ucontrol);
어쩌면 더 나은,하지만 나는 여전히 정적 메서드에서 mainform에 액세스하는 것이 가능하다 가정을 :은 내가 UserControl을 내부에이 같은 일을 결국?
업데이트 # 2 :
Application.OpenForms["FormName"]
는 정적 메서드에서 일했다.
나는 그 usercontrol 전체 목적이 다른 usercontrols onclick을 보여주는 버튼이있는 메뉴로 사용되는지 알아 내려고 여전히 mainform (usercontrols를 보여주는 함수)을 호출하는 '디자인 범죄' 사용자 정의 컨트롤에서? (내가 '업데이트 # 1'에서했던 것처럼)
이것은 Winforms가 잘못하고 있음을 상기시키는 방법 중 하나입니다. 사용자 컨트롤은 부모에게 컨트롤을 추가하지 않아야합니다. 이벤트를 발생시킵니다. –
@HansPassant - 왜 그렇게 잘못 됐는지 설명해 주시겠습니까? – BornToCode