◆ 다른 폼 간의 이벤트 설정
C# 에서는 컴포넌트(체크박스, 텍스트 박스 등)를 public으로 선언하면 폼 간의 컴포넌트 이벤트를 설정할 수 있습니다.
폼2에서 체크박스를 변경하면 폼1에서는 이벤트로 처리가 가능한 예제를 만들어 보겠습니다.
폼1 소스
public partial class Form1 : Form
{
// 일단폼를생성하고, 폼의중복생성방지를위해hide, show 를이용합니다.
Form2 frmForm2 = new Form2();
public Form1()
{
InitializeComponent();
// 애플상태변경이벤트체크
frmForm2.chkApple.CheckedChanged += new EventHandler(chkApple_CheckedChanged);
// 바나나상태변경이벤트체크
frmForm2.chkBanana.CheckedChanged += new EventHandler(chkBanana_CheckedChanged);
}
void chkBanana_CheckedChanged(object sender, EventArgs e)
{
this.UpdateLabel();
}
void chkApple_CheckedChanged(object sender, EventArgs e)
{
this.UpdateLabel();
}
void UpdateLabel()
{
this.lblData.Text = “”;
if (frmForm2.chkApple.Checked)
this.lblData.Text += “사과,”;
if (frmForm2.chkBanana.Checked)
this.lblData.Text += “바나나,”;
}
private void button1_Click(object sender, EventArgs e)
{
// 이미생성된것이라show만해줍니다.
frmForm2.Show();
}
}
폼2 소스
public Form2()
{
InitializeComponent();
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
// 폼를닫기했을때실제로닫히지않고hide로숨기기만합니다.
this.Hide();
e.Cancel = true;
}
◆ 전체 소스