본문 바로가기
C#, MONO

다른 폼으로 메시지 전송(2)

by gigasound 2021. 8. 9.

다른 폼으로 문장으로 메시지를 전송하는 방법입니다. 

그런데 이 방법은 다소 볼 안전합니다.

전송할 폼의 코드 내용은 다음과 같습니다.

//- userControl class
public partial class UserControl1 : UserControl{
	//- property로 변경 내용 (event)이 있음을 알림
	public event PropertyChangedEventHandler PropertyChanged;
	//- 변경될 내용이 기록되는 멤버
	private string str_msg;

	public UserControl1(){
		InitializeComponent();
	}

//- 변경 내용이 전달되는 함수 정의 
public string Message{
	get { return str_msg; }
	set{
		if (value != str_msg) {
			str_msg = value;
			if (PropertyChanged!= null){
				PropertyChanged(this, new PropertyChangedEventArgs(msg));
			}
		}
	}
}

private void button1_Click(object sender, EventArgs e){
	//- 전달 내용 전달을 위한 처리 
	this.Message = button1.Text;
}

수신 측인 메인 폼의 내용입니다. 

private void Form1_Load(object sender, EventArgs e) {
	//- userform에서 property 변경 이벤트를 수신하는 콜백함수 선언
	cntr.PropertyChanged += Cntr_PropertyChanged; 
	// press tab + tab after += 
	// and it will generate the following method automatically.
}

//- 콜백함수 
private void Cntr_PropertyChanged(object sender, PropertyChangedEventArgs e) {
	textBox1.Text = cntr.a.ToString(); //cntr is the instance of UserControl1
}