2008-11-05 5 views
9

폼이로드되면 코드는 설치 데이터 격자, 콤보 상자, 제목 설정 등과 같은 작업을 수행해야합니다. 새 (생성자)가 아닌로드 이벤트를 항상 사용하는 경향이 있습니다. 어떤 활동에 가장 적합한 지침이 있습니까?Winforms 폼 생성자 대로드 이벤트

+0

[양식 생성자와 양식로드 이벤트의 설정 코드는 무엇입니까?] 가능한 복제본 (http://stackoverflow.com/questions/2521322/what-setup-code-should-go-inform-constructors- 대 - 양식 -로드 - 이벤트) –

답변

0

기본적으로 생성자가 가능한 한 가벼운 것을 원합니다. UI 요소가 만들어지고 현재 사용할 수 있기 때문에 대부분의 것들을 Load 이벤트 처리기에 넣으려고합니다. 그러나, 나는 보통 클래스 객체 등을 실제로 생성자의 일부로 생성자에서 인스턴스화합니다. 때로는 물건을 한 곳이나 다른 곳에 넣을 수는 없지만 할 수있는 시간에는 가장 적절한 곳에 놓아야합니다.

+0

그 반대가 더 좋은 이유는 여기에서 읽어보십시오. http://stackoverflow.com/a/2522999/4136325 –

2

InitializeComponent에 대한 호출이 자동으로 양식/페이지의 생성자에 삽입됩니다. 의 InitializeComponent는

  • 리소스 파일에 저장된 값으로 그 속성이
  • 그래서 아무것도 UI에 관련된 초기화

    • 당신의 WinForm/XAML 페이지에 다양한 UI 요소를 생성하는 자동 생성 방법 배열/수정은 이후에 이되어야합니다. Form.OnLoad의 재정의 (override)에서 이렇게하면 UI가 준비가되었음을 확신 할 수 있습니다 (InitializeComponent가 호출되었습니다) ... 그래서 UI 용 OnLoad를 고수하기 위해 투표 할 것입니다.
      UI가 아닌 멤버를 생성하면 생성자는 내가 먼저 살펴볼 장소가됩니다.

    1

    양식 생성자의 모든 항목이 해당 양식 작성시 만들어지고 실행된다는 점에 유의하십시오. 즉 :

    양식 frm = 새 양식();

    반면에 Load 이벤트의 내용은 양식이 인 경우에만 표시됩니다. 즉 frm.Show();

    +0

    또한 표시된 이벤트가 있습니다. 로드 이벤트는 폼이 표시되기 전에 발생하지만 윈도우가 존재하고 레이아웃이 완료되었을 때 발생합니다. –

    관련 문제