Nice programing

양식 생성자 대 양식로드 이벤트에는 어떤 설정 코드가 있어야합니까?

nicepro 2021. 1. 7. 21:21
반응형

양식 생성자 대 양식로드 이벤트에는 어떤 설정 코드가 있어야합니까?


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 생성자에서 초기화 코드를 처리하는 것이 좋습니다.

참조 URL : https://stackoverflow.com/questions/2521322/what-setup-code-should-go-in-form-constructors-versus-form-load-event

반응형