C# 델리게이트를 이용한 이벤트 생성 (Part-3)
Software/C#2023. 2. 6. 14:03
반응형
이벤트 생성 3번째 입니다. 이번 예제는 이벤트 함수의 파라메타로 이벤트 발생시 데이타 정보를 전달하는 방법에 대해 설명을 합니다. 예제는 part-1 에서 사용했던 MyText 클래스를 변형하여 사용하였습니다.
우선 아래와 같이 이벤트 발생시 데이타를 추가하여 파라메터로 넘겨줄 클래스를 하나 생성 합니다.
기본 클래스인 EventArgs를 상속 받아서 만드는데 EventArgs는 아무것도 넘겨줄게 없을때 사용하는 클래스 입니다.
public class MyTextEventArgs : EventArgs
{
public string Text { get; } // 파라메터로 넘겨 줄 데이타
public MyTextEventArgs(string text) // 생성자에서 변경된 Text 정보를 넘겨받는다.
{
this.Text = text;
}
}
델리케이트 선언에서 함수 파라메터로 위에서 만든 클래스를 사용합니다.
그리고 이벤트 함수 실행부분에서 변경된 Text 정보를 생성자의 파라메터로 넘겨 줍니다.
public class MyText
{
public delegate void EventHandler(object sender, MyTextEventArgs e); // 이벤트 핸들러의 형식을 delegate로 등록한다.
private string text = "";
public string Text
{
set
{
text = value;
if(OnTextChangedHandler != null)
{
OnTextChangedHandler(this, new MyTextEventArgs(text)); // 이벤트 함수 실행시 변경된 Text 정보를 전달합니다.
}
}
}
public event EventHandler? OnTextChangedHandler = null ;
}
사용방법은 아래와 같습니다.
public partial class Form1 : Form
{
MyText myText = new MyText();
public Form1()
{
InitializeComponent();
myText.OnTextChangedHandler += text_Changed;
}
private void text_Changed(object sender, MyTextEventArgs e)
{
textBox1.Text = e.Text; // 파라메터를 통해 넘어온 변경 데이타를 이용합니다.
}
private void button1_Click(object sender, EventArgs e)
{
myText.Text = "Hello World.";
}
}
반응형
'Software > C#' 카테고리의 다른 글
C# TCP/IP 를 이용한 Client 클래스 (0) | 2023.02.13 |
---|---|
C# Multi Thread를 이용한 다중 Client 접속 Server (1) | 2023.02.11 |
C# 델리게이트를 이용한 이벤트 생성 (Part-2) (0) | 2023.02.05 |
C# 델리게이트를 이용한 이벤트 생성 (Part-1) (0) | 2023.02.04 |
C# Newton json 사용방법 (part - 2) (0) | 2023.01.27 |
댓글()