이벤트의 개념 : '사건'
이벤트 처리기
~~~
<이벤트 선언 형식>
접근 지정자 event 델리게이트 이름;
<이벤트 등록 형식>
delEvt += new CalcDelegate(등록할 이벤트 처리기(메소드));
C#에서의 이벤트 발생 시 작성 과정
1. 이벤트 발생 시 처리할 이벤트 처리기(메소드) 작성
2. 이벤트 처리기와 형식 같은 델리게이트 선언 (받는 인자와 반환 데이터형)
3. 이벤트 선언
4.이벤트에 델리게이트 이용하여 이벤트 처리기 등록 (주문내역 = 호출벨 등록)
5. 이벤트를 발생시켜 처리 여부 확인 (점원이 호출벨 울려서 커피 나왔음을 알려줌 : 처리완료)
<이벤트 생성 및 발생 예제>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleEvent
{
internal class Program
{
public delegate void ButtonEvent();
public static event ButtonEvent evtClick;
public static void onClick()
{
evtClick();
}
public static void MyHandler()
{
Console.WriteLine("버튼 클릭 처리기 수행");
}
static void Main(string[] args)
{
evtClick += new ButtonEvent(MyHandler);
onClick();
}
}
}
<EventHandler 델리게이트를 사용한 이벤트 처리>
프로젝트명 : FormEvent
요기서 중요한 포이트는 콘솔 기반의 프로젝트에서 윈도우 form을 호출하기 위해서는
윈도우 폼 관련 라이브러리를 추가해야한다고 한다.
아래에서는 먼저 참조 추가하는 과정을 나타내고 있다.
[프로젝트]- >[참조 추가]
[참조관리자] 창에서 목록 중 [System.Windows.Forms.dll]을 선택한 후 [확인]버튼 누르면
코드에 참조가 추가됨으로써 윈도우 폼을 호출하여 사용 할 수 있다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FormEvent
{
public class FormEvent : Form
{
public FormEvent()
{
this.Click += new EventHandler(ClickEvent);
}
private void ClickEvent(object senderm, EventArgs e)
{
MessageBox.Show("마우스 클릭 이벤트를 처리합니다.");
}
}
internal class Program
{
static void Main(string[] args)
{
Application.Run(new FormEvent());
}
}
}
[ C#] 기본 컨트롤 (Form, 체크박스,라디오버튼,그룹박스,텍스트박스,리스트박스와콤보박스) (2) | 2024.10.27 |
---|---|
[C#] String 클래스 + 문자열 관리 메소드 표 제공 (0) | 2024.10.27 |
[C#] 콜백 메소드 Callback _반대호출 _ 이벤트로 인한 호출 (1) | 2024.10.27 |
[C#] 엉?델리만쥬말고 델리게이트가 뭐야? Delegate 대리자?! (0) | 2024.10.27 |
[C#] Interface에 대해서 (0) | 2024.10.27 |