본문 바로가기
윈도우프로그래밍

[C#] DataGridView의 ComboBoxColumn 값이 변경된 후 이벤트 처리하기

by 바퀴 굴리는 프로그래머 2018. 3. 19.
반응형

/// <summary>

/// StepUnit ComboBox의 EditingControl 이 나타날 때 dgvFreqSubrange_

/// ComboSelectionChanged 이벤트 핸들러를 동적으로 링크시키기 위한 루틴

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void dgvFreqSubrange_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)

{

    if (dgvFreqSubrange.CurrentCell.ColumnIndex == colFreqSubrange_StepUnit.Index &

       e.Control is ComboBox)

    {

        try

        {

            ComboBox cboStepUnit = e.Control as ComboBox;

                                                   

            // 파일 선택 취소시 현재 선택된 아이템으로 복구하기 위함

            previous_index = cboStepUnit.SelectedIndex;

            

            // 기존의 이벤트 핸들러 삭제 후 새 이벤트 핸들러 추가

            cboStepUnit.SelectionChangeCommitted -= dgvFreqSubrange_ComboSelectionChanged;

            cboStepUnit.SelectionChangeCommitted += dgvFreqSubrange_ComboSelectionChanged;

        }

        catch (Exception ex)

        {

            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        }

    }

}

 

 

주의: SelectedValueChanged 로 생성하면 의도치 않은 결과가 나타나니 주의할 것.

반응형