삽질의 현장/- .NET

#097_닷넷(.NET)_ WinForm - WinForm 기초 및 Event

shovelman 2015. 11. 21. 11:22


안녕하세요 삽잡이입니다.


이번시간에는

지난시간에 배운 기본적인 WinForm의 개념을 더해서 이벤트까지 한번 알아보려고합니다.



참고로, 지금부터는 'designer.cs' 에 있는 코드는 '디자이너 코드',

그리고 우리 프로그래머가 다루는 코드는 그냥 '코드'라고 칭하겠습니다.

   



기본적으로 Main Form에서 대부분의 활동을 하게 됩니다.




간단하게 Form의 [속성]들을 살펴보자면,

크기를 줄이던지 늘릴 수 있고, 혹은 투명도, 위치등 설정이 가능합니다.



그런데, 기본적으로 코드로도 바꿀 수 있지요.


처음 Form이 실행될 때에는,

초기 값을 사용하는 Look & Feel 코드로써 

InitializeComponent() 메서드를 호출하게 됩니다.


느껴지는대로 보여주는 디자인 코드져 허허...

이는 초기값을 설정해주는 것으로써 언제든 코드로 수정이 가능하겠군요.



그런데 이렇게 코드를 통해 작성하게 되면,

내가 짠 코드이기 때문에 디자이너 코드에는 추가가 되지 않습니다.

따라서, 실행 전 디자인 도면에는 보이지 않습니다.



실행시 코드를 읽어들여서 코드로 작성한 컨트롤이 보이겠지만요.


컨트롤들을 추가하여 

컨트롤에 접근할 시 이벤트가 발생하도록 설정할 수 도 있습니다.



Form 안에 자식 컨트롤로써

이벤트에 대한 행동을 코드에서 핸들러 메서드로 구현할 수 있습니다.


반환형으로 void 형식을 받군요. 

그리고, 핸들러의 인수를 봅시다.

첫번째 인수로는 'object'를 받습니다. 즉, 누가 보냈는지에 대한 타입을 받는 것이지요.

그리고 두번째 인수로 EventArgs 형식을 받습니다.




또한, 디자이너 코드에서 이벤트가 등록되는 것을 확인할 수 있습니다.


만약, 디자이너 코드에 핸들러를 등록하는 코드가 없게되면,

코드 부분에 있는 핸들러 함수는 단지 메서드 정의가 될 뿐입니다.

호출이 될 일이 없겠지요.



물론, 디자이너 코드에서 등록하지 않고,

수동으로 우리 코드에서 추가할 수도 있습니다.


this는 Main 윈도우인 Form입니다.

그리고 button을 클릭했을 때 이벤트를 발생하고자 했기 때문에,

디자이너가 버튼을 만들었으니, 버튼에 대한 참조가 필요합니다.

따라서 이름이 있는 것이죠. 

위의 예제에서는 버튼에 대한 참조자는 'button1' 이군요.


디자이너 코드부분은 

내가 만들어야하는 코드를 GUI Editor를 사용하여 자동으로 코드를 만들어주는 것입니다.


따라서, 디자이너에서 하는 세자지

즉, '객체 생성', '이벤트 연결', '속성 작업'을 

일반적으로 코드상에서도 할 수 있다는 것을 알게 되었습니다.


이벤트들은 기본적으로 EventHandler 대리자로 구현이 되어있습니다.



이번 시간은 여기까지 하도록 하겠습니다.


이상 삽잡이였습니다!