양식 생성자 대 양식로드 이벤트에는 어떤 설정 코드가 있어야합니까?
winforms 응용 프로그램의 경우 어떤 설정 코드를 입력해야하는지 궁금합니다.
- MainForm ()
반대로
- MainForm_Load (객체 발신자, EventArgs e)
여기에 모범 사례 지침이 있습니까?
VB6로 작업 한 프로그래머는 Load 이벤트에 많은 코드를 넣는 경향이 있습니다. VB6에서는 이벤트가 양식을 초기화하는 데 사용되었습니다. 그러나 Windows Forms에서는 더 이상 적합하지 않으며 Form 클래스에는 생성자가있을 수 있습니다. .NET 방식은 생성자에서 클래스 개체를 초기화하는 것입니다. Form 클래스에 대해 그렇게하지 않는 설득력있는 이유는 거의 없습니다.
Load 이벤트는 폼의 창 핸들이 생성 된 직후 사용자에게 표시되기 직전에 실행됩니다. 핸들 생성 여부에 따라 이벤트 처리기에서만 코드를 작성해야합니다. 이 요구 사항을 충족하는 코드는 창 크기와 위치를 알아야하는 한 가지 종류를 제외하고는 많지 않습니다.
양식이 다른 컴퓨터에서 실행될 때 양식의 디자인 타임 크기 및 위치 속성 값은 실제 값과 동일하지 않습니다. 대상 컴퓨터의 시스템 글꼴 크기 또는 비디오 어댑터 DPI 설정에 맞게 양식의 크기를 조정할 수 있습니다. 사용자 기본 설정도 역할을합니다. 사용자가 창 캡션에 대해 다른 글꼴 크기를 선택했을 수 있습니다. 창이 바탕 화면에서 특정 위치를 갖거나 다른 창과 정렬되기를 원하지 않는 한 일반적으로 이것에 대해 신경 쓰지 않습니다.
TreeView 또는 ListView 컨트롤 초기화와 같은 작업을 수행하는 Load 이벤트에 코드를 작성하면 실제로 시작 시간이 크게 느려질 수 있습니다. 생성자에서 수행하면 Windows Forms는 아직 물리적 창을 업데이트 할 필요가 없으며 아직 생성되지 않았습니다. 네이티브 컨트롤이 생성되면 Winforms는 Load 이벤트에서 코드가 실행될 때 발생하는 것처럼 한 번에 하나의 노드 / 항목 대신 대량 업데이트를 사용하여이를 초기화합니다. 큰 차이.
마지막으로, Load 이벤트를 사용해서는 안되며 OnLoad () 메서드를 재정의해야합니다. 이렇게하면 사용자 (또는 다른 사람)가 Form 클래스에서 상속 할 때 코드가 예측 가능한 순서로 실행됩니다. IntelliSense는이 메서드를 작성하는 데 도움이됩니다. "protected onl"을 입력하고 Tab 키를 눌러 IntelliSense가 메서드를 자동 완성하도록합니다. base.OnLoad () 호출 전후에 코드를 넣는 방법을 선택할 수 있다는 점에 유의하십시오. 이것이 누가 보스인지 제어하는 방법입니다. 당신은 올바른 선택 btw가 아닌, 당신이 그것을 나중에 넣을 때 보스입니다.
Windows Forms에서 생성자 를 사용하여 적절한 초기화를 확인하십시오.
Windows Form에서 생성자를 사용하여 초기화가 제대로 수행되었는지 확인합니다. 이벤트 발생 순서는 정확한 과학이 아니며 과거에 본 것과 상관없이 이벤트 발생 순서에 항상 의존 할 수는 없습니다.
....
이러한 이유로 Microsoft는 시간 분할을 가져 오거나 DoEvents ()를 수행 할 수있는 시간 소모적 인 초기화가 없다고 가정하고 Forms 생성자에서 초기화 코드를 처리하는 것이 좋습니다.
'Nice programing' 카테고리의 다른 글
자바에서 프로그래밍 방식 교착 상태 감지 (0) | 2021.01.07 |
---|---|
언제 쿠키 대신 세션 변수를 사용해야합니까? (0) | 2021.01.07 |
Testng, Emma, Cobertura, Coverage 및 JDK 7 결과 ClassFormatError 및 VerifyError (0) | 2021.01.07 |
Jenkins 및 Git 스파 스 체크 아웃 (0) | 2021.01.07 |
캡슐화와 추상화의 차이점 (0) | 2021.01.07 |