본문 바로가기
프로그래밍/C# (WinForms)

C#, WinForms ] 자식 폼에서 부모 폼으로 데이터 전달 방법, 이벤트 / 프로퍼티

by eteo 2023. 5. 14.

 

 

 

 

 

자식폼에서 dataGridView의 selectedIndex 전달 받기

 

 

 

 

1. 이벤트 활용 방법

 

자식폼

public partial class DeviceListForm : Form
{
    // ...
    public event EventHandler<int> OnItemSelected;

    // OK 버튼 클릭 시 
    private void buttonOk_Click(object sender, EventArgs e)
    {
        if(deviceList.SelectedIndex != -1)
        {
            OnItemSelected?.Invoke(this, deviceList.SelectedIndex);
        }
    }

    // ListBox 더블클릭 시
    private void deviceList_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        if (deviceList.SelectedIndex != -1)
        {
            OnItemSelected?.Invoke(this, deviceList.SelectedIndex);
        }
    }
}

 

 

 

부모폼

public partial class MainForm : Form
{
    //...

    private void MainForm_Load(object sender, EventArgs e)
    {
        deviceListForm = new DeviceListForm();
        // 이벤트 구독
        deviceListForm.OnItemSelected += deviceListForm_OnItemSelected;
    }
    
    // 이벤드 핸들러
    void deviceListForm_OnItemSelected(object sender, int itemIndex)
    {
        deviceListForm.Hide();

        // 캡쳐 스타트
        StartCapture(itemIndex);
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 이벤트 + 프로퍼티 사용방법

 

자식 폼

public string SelectedValue { get; set; }
private void deviceList_SelectedIndexChanged(object sender, EventArgs e)
{
    SelectedValue = deviceList.SelectedItem.ToString();
}

 

부모 폼

void deviceListForm_OnItemSelected(object sender, int itemIndex)
{
    // ...
    label1.Text = deviceListForm.SelectedValue;
}

 

 

이벤트는 특정 상황이 발생했을 때, 이를 구독하는 다른 객체들에게 전달인자와 함께 알리는 기능을 한다.

그리고 프로퍼티는 클래스 멤버 변수에 접근할 때 사용될 수 있는 인터페이스인데 이를 통해 부모폼 클래스에서 자식폼 클래스의 멤버 변수에 접근할 수 있다.