본문 바로가기

코딩정보/C#

[DataGridView] 콤보박스 원클릭 리시트 보여주기

반응형

안녕하세요

 

코딩연습생입니다

 

C# Winform에서 데이터그리드뷰를 사용해서 이런저런(?) 프로그램을 구현하실때 

 

데이터그리드뷰에 생성한 콤보박스가 꼭 두번씩 클릭해야 리스트를 보여주는 현상을 보신적 있으실거 같은데요

 

저만 그런건지는 잘 모르겠지만...

 

제가 파악해본결과 데이터 그리드뷰의 콤보박스 Cell이 활성화 된 이후 드롭다운이 발생할때 리스트를 보여주기 때문에

 

활성화 1번 클릭 -> 드롭다운 1번 클릭 = 2번클릭

 

이렇게 되는거 같습니다 저는 한번에 클릭해서 처리하고 싶은데 말이죠

 

그래서 이번 포스팅에서 그걸 해결 할 수 있는 팁을 알려드릴려고 합니다

 

제가 할려는 방법 이외에 더 쉬운 방법이나 정보가 있으면 공유 부탁드립니다ㅎ

 

일단 현상 부터 한번 보시죠

 

1) 제가 만든 데이터 그리드뷰에 이렇게 연속적인 콤보박스가 두개 존재합니다

    - 1개는 공백이 들어가 있는 콤보박스

    - 1개는 Y/N이 표시되는 콤보박스

 

 

2) 마우스를 한번 클릭 했을때의 모습입니다

    - 클릭한 콤보박스 영역이 선택은 되었지만 리스트는 드릴다운이 되지 않았습니다

 

 

3) 활성화된 콤보박스를 마우스로 재 클릭 했을때 모습 입니다

   - 이제서야 드릴다운이 되면서 리스트가 보입니다

 

 

자 이제 해결하기 위해서 그리드 뷰의 CellClick 이벤트를 생성하겠습니다

 

1) 디자인화면에서 데이터그리드 이벤트중 CellClick 이벤트를 다음과 같이 생성합니다

 

 

2) 소스코드를 작성합니다

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            var datagridview = sender as DataGridView;

            if (e.ColumnIndex == 11 || e.ColumnIndex == 9)
            {
                datagridview.BeginEdit(true);
                ((ComboBox)datagridview.EditingControl).DroppedDown = true;
            }
        }

 

3) 디버깅 이후 실행해서 테스트 합니다

    - 활성화와 드릴다운이 동시에 진행 됩니다

반응형