차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

csharp_폼_생성_시_메서드_호출_순서 [2011/02/11 09:17]
raychani 새로 만듦
csharp_폼_생성_시_메서드_호출_순서 [2011/03/09 09:48] (현재)
raychani
줄 38: 줄 38:
     - 아마 이걸 무시할 수 없는 프로그램을 만드는 사람이 이 글을 읽고 있지는 않을 것이다.     - 아마 이걸 무시할 수 없는 프로그램을 만드는 사람이 이 글을 읽고 있지는 않을 것이다.
  
-:​!::​!::​!::​!::​!::​!::​!::​!:​이후 수정중 +MFC는 이와 같이 호출되는 함수가 딱딱 명확하여 어디에서 초기화할지가 눈에 보여 편했다. 하지만 MFC를 하던 감으로 C#을 가지고 노려니 영 어색하다. C#의 메서드(?​) 호출 순서는 상당히 다르다. 아니 사실 이벤트 핸들러라는 것이 생긴 C#의 개념 자체가 달라 적응이 어렵다.
- +
-MFC는 이와 같이 호출되는 함수가 딱딱 명확하여 어디에서 초기화할지가 눈에 보여 편했다. 하지만 MFC를 하던 감으로 C#을 가지고 노려니 영 어색하다. C#의 메서드(?​) 호출 순서는 상당히 다르다.+
  
 +처음 생성하는 폼의 이름은 기본적으로 Form1이지만 이것을 MainForm으로 수정하였다.
   - static void Main(string[] args)   - static void Main(string[] args)
     - 자바와 비슷하다.     - 자바와 비슷하다.
     - Program이란 클래스의 Main에서 시작한다.     - Program이란 클래스의 Main에서 시작한다.
-  - MainForm() +  - MainForm(), Application.Run(new MainForm())
-    - 다음 것과 같이 보는 것이 좋다.+
     - 코드는 Apllication.Run이 먼저 나오지만 어쨌건 생성자가 먼저 호출된다.     - 코드는 Apllication.Run이 먼저 나오지만 어쨌건 생성자가 먼저 호출된다.
-  - Application.Run(new MainForm()) 
     - 아마 보통 신경을 잘 안 써서 MainForm 대신 Form1을 볼 수 있을 것이다.     - 아마 보통 신경을 잘 안 써서 MainForm 대신 Form1을 볼 수 있을 것이다.
     - 폼을 생성하면서 바로 창을 띄워버린다.     - 폼을 생성하면서 바로 창을 띄워버린다.
줄 55: 줄 52:
     - 각종 리소스(컨트롤)을 초기화한다.     - 각종 리소스(컨트롤)을 초기화한다.
     - 코드편집기로 수정하지 말라고 명시돼 있다.     - 코드편집기로 수정하지 말라고 명시돼 있다.
 +  - MainForm Load
 +    - 폼 생성이 완료되면 다음 순서가 이것이다. 그러나 따로 메소드가 있지는 않고 이벤트 핸들러를 추가해 주어야 한다.
 +    - MainForm의 생성자에 다음 코드 추가
 +      - <​code>​this.Load += new EventHandler(MainForm_Load);</​code>​
 +    - MainForm 클래스에 다음 메소드 추가
 +      - <​code>​private void MainForm_Shown(object sender, EventArgs e)</​code>​
 +  - MainForm Shown
 +    - MainForm Load와 같다.
 +    - 폼 생성후에 바로 다른 폼을 여는 경우, 다른 폼을 여는 코드를 이곳에 넣어야 순서가 올바르게 적용된다.
 +    - Load에 넣는 경우 다른 폼이 먼저 열리고, MainForm이 나중에 열린것과 같은 형태가 된다.
   - 각종 이벤트 처리   - 각종 이벤트 처리
     - 실제 프로그램이 수행되는 부분이다.     - 실제 프로그램이 수행되는 부분이다.
줄 60: 줄 67:
   - 소멸 과정   - 소멸 과정
     - .NET 프레임워크가 알아서 처리한다.     - .NET 프레임워크가 알아서 처리한다.
- 
-CTestDlg::​OnDestroy()와 같은 건 .NET 프레임워크가 알아서 처리한다 쳐도, InitializeComponent에서 ​ 
  
 ~~LINKBACK~~ ~~LINKBACK~~
 ~~DISCUSSION~~ ~~DISCUSSION~~