C# 델리게이트를 이용한 이벤트 생성 (Part-1)
Software/C#2023. 2. 4. 10:31
반응형
객체 내에서 발생하는 어떤 사건에 대해 이벤트를 발생시키는 코드를 만들기 위해 인터넷을 검색해 봤는데 하나같이 뭔가 2% 부족한 부분이 있는것 같아서 이참에 간단한 예제를 하나 만들어 보았습니다.
part-1에서는 MyText 라는 객체를 생성하고 객체의 Text 가 변경되면 이벤트가 발생하는 형식으로 예제를 구성했습니다.
아래는 MyText 라는 클래스입니다.
public class MyText
{
public delegate void EventHandler(object sender, EventArgs e); // 이벤트 발생을 위한 함수 형식의 델리게이트 선언
private string text = "";
public string Text
{
get { return text; }
set
{
text = value;
if(OnTextChangedHandler != null)
{
OnTextChangedHandler(this, new EventArgs()); // Text 가 변경될 경우 이벤트 함수 실행
}
}
}
public event EventHandler? OnTextChangedHandler = null; // 이벤트 함수 핸들러 선언
}
이제 위의 클래스를 이용해서 실제 이벤트를 발생시키는 코드를 만들어 봅니다.
폼에 버튼 하나와 TextBox 하나를 올려 놓고 테스트를 해 보았습니다.
public partial class Form1 : Form
{
MyText myText = new MyText(); // MyText 의 객체를 생성한다.
public Form1()
{
InitializeComponent();
myText.OnTextChangedHandler += text_Changed; // 객체내의 Text가 변경되었을 때 수행할 이벤트 함수를 등록한다.
}
private void text_Changed(object sender, EventArgs e) // 이벤트 함수 구현 부분
{
textBox1.Text = myText.Text; // MyText 객체의 Text를 TextBox 에 쓴다.
}
private void button1_Click(object sender, EventArgs e)
{
myText.Text = "test"; // 버튼을 클릭하면 MyText 객체의 Text를 변경한다.
}
}
반응형
'Software > C#' 카테고리의 다른 글
C# 델리게이트를 이용한 이벤트 생성 (Part-3) (0) | 2023.02.06 |
---|---|
C# 델리게이트를 이용한 이벤트 생성 (Part-2) (0) | 2023.02.05 |
C# Newton json 사용방법 (part - 2) (0) | 2023.01.27 |
Contec 사의 GPIB 카드 (GP-IB(PCI)F) 제어를 위한 Class (C#) (0) | 2023.01.19 |
C# Newton json 사용방법 (part -1) (0) | 2023.01.10 |
댓글()