c# 여러 비주얼 컴포넌트들을 하나의 이벤트 메떠드로 제어하기
아래의 코드는 두 개의 버튼들을 하나의 배열에 넣고 하나의 이벤트 메떠드로 제어하는 예제다. 리스트에 넣어도 된다.
Buttons[0].Click +=까지만 입력하고 탭 키를 누르면 이벤트 메떠드가 자동으로 만들어진다.
Button[] Buttons;
private void Form1_Load(object sender, EventArgs e)
{
Buttons = new Button[] { button1, button2 };
Buttons[0].Click += Buttons_Click;
Buttons[1].Click += Buttons_Click;
}
private void Buttons_Click(object? sender, EventArgs e)
{
Text = sender.ToString();
}
위의 코드를 실행하고 버튼을 클릭하면 button1나 button2가 출력된다. 그러나 아래의 코드는 다르다.
DataGridView[] DataGridViews;
private void Form1_Load(object sender, EventArgs e)
{
DataGridViews = new DataGridView[] { dataGridView1, dataGridView2 };
DataGridViews[0].Click += DataGridViews_Click;
DataGridViews[1].Click += DataGridViews_Click;
}
private void DataGridViews_Click(object? sender, EventArgs e)
{
Text = sender.ToString();
}
버튼의 경우와는 달리 그냥 DataGridView라고만 나온다. 따라서 두 개의 DataGridView들 가운데 어느 건지 모를 거 같다. 그러나 아래와 같이 해 보면 분명하게 구별이 된다.
private void DataGridViews_Click(object? sender, EventArgs e)
{
if ((DataGridView)sender == dataGridView1)
{
Text = "1";
}
else
{
Text = "2";
}
}