2017-09-20 4 views
1

Visual Studio 2010에서 vb.NET을 사용하고 있습니다. DataGridView 셀에 ComboBox를 추가하는 방법의 예제를 발견하고이를 코드에 추가했습니다. 코드를 실행하고 새 행을 추가하면 ComboBox가 표시되지만 값이 표시되지 않고 드롭 다운되지 않습니다.DataGridViewComboBoxCell이 드롭되지 않습니다.

코드에서 뭔가 빠졌습니까? DataGridView에 특정 속성이 설정되어 있어야합니까?

dgvFiles.Rows.Add({"Cell1","Cell2"}) 
Dim gridComboBox As New DataGridViewComboBoxCell 
gridComboBox.Items.Add("A") 'Populate the Combobox 
gridComboBox.Items.Add("B") 'Populate the Combobox 
gridComboBox.Items.Add("C") 'Populate the Combobox 
dgvFiles(2, dgvFiles.Rows.Count - 1) = gridComboBox 

편집 : 내가 디자인 타임에 네 개의 열을 설정했다

, 그 문제가 아니었다. 문제는 DataGridView를 'EditProgrammatically'로 설정했기 때문입니다. 처음에는 사용자가 텍스트 셀을 편집하지 못하도록 변경했지만, 분명히 ComboBoxes가 삭제되지 않았습니다.

모든 답변을 주셔서 감사합니다. 디자인 타임에 4 개의 열을 설정했다는 사실을 잊어 버렸습니다.이 문제는 EditProgrammatically 설정을 실현하지 못해서 발생했습니다.

+0

나는 당신이 datagridviewcomboboxcolumn를 추가하고 해당 컬럼에 comboboxcell을 추가해야합니다 생각합니다. 여기처럼 : https://stackoverflow.com/questions/11657345/how-do-i-select-a-value-in-a-datagridviewcomboboxcell –

+0

디자인 모드에서 코드를 사용하는 대신 모든 설정을 수행 할 수도 있습니다. 값은 예제와 같이 정적입니다. – braX

+0

당신은 jacob과 같은 전체 칼럼을 만들 필요가 없다고 말했습니다. 당신은 그리드에서 단 하나의 콤보 박스를 가질 수 있습니다. –

답변

0

코드가 거의 정상입니다. 모든 것이 떨어집니다. 목록에 기본값이 표시 될 수 있습니다.

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     dgvfiles.Columns.Add("Column1", "Column 1") 
     dgvfiles.Columns.Add("Column2", "Column 2") 
     dgvfiles.Columns.Add("Column3", "Column 3") 
     dgvfiles.Columns.Add("Column4", "Column 4") 
     dgvfiles.Rows.Add({"Cell1", "Cell2"}) 
     Dim gridComboBox As New DataGridViewComboBoxCell 
     gridComboBox.Items.Add("A") 'Populate the Combobox 
     gridComboBox.Items.Add("B") 'Populate the Combobox 
     gridComboBox.Items.Add("C") 'Populate the Combobox 
     gridComboBox.Value = gridComboBox.Items(0) 
     dgvfiles(2, dgvfiles.Rows.Count - 2) = gridComboBox 
    End Sub 

    Private Sub dgvfiles_CellBeginEdit(sender As Object, e As DataGridViewCellCancelEventArgs) Handles dgvfiles.CellBeginEdit 
     If e.ColumnIndex = 2 Then 
      'Do something 
     Else 
      e.Cancel = True 
     End If 
    End Sub 

enter image description here

+0

그러나 DataGridView는 디자인 모드에서 네 개의 열로 설정됩니다. – jcvamp

+0

gridComboBox.Value = gridComboBox.Items (0)를 추가하면 값이 표시되지만 여전히 드롭 다운되지는 않습니다. 빈 DataGridView를 사용하여 테스트 프로젝트를 만들고 그 프로젝트가 작동하는지 확인하여 디자인 타임에 설정을 변경했는지 확인할 수 있습니다. – jcvamp

+0

좋아요, 분명히, 'EditProgrammatically'로 설정했기 때문에 작동하지 않았습니다. 하지만 다른 것을 변경하면 편집 할 수있는 다른 셀이 만들어 지므로 원하지 않습니다. 나는 다른 세포를 편집 할 수 없게 만드는 방법을 찾아야 할 것 같아. – jcvamp