2016-08-09 3 views
0

사용자가 다른 항목을 입력하고 종료하고 "편집"할 수있는 응용 프로그램을 만들고 있습니다. 편집 상태로 전환 할 때 DataGridView의 특정 열을 활성화하고 종료 할 때 열을 비활성화하려고합니다. 아래 코드는 부울 EditMode이 변경 될 때 실행됩니다.DataGridView 열을 읽기 전용으로 만들 수 없습니다.

'Change ReadOnly to Not EditMode 
'dgv.ReadOnly = Not EditMode       'Works 
dgv.Columns("colCode").ReadOnly = Not EditMode   'Does not work 
dgv.Columns("colText").ReadOnly = Not EditMode   'Does not work 
dgv.Columns("colTarget").ReadOnly = Not EditMode  'Does not work 
dgv.Columns("colCheck").ReadOnly = Not EditMode  'Does not work 

전체 DataGridView에 읽기 전용 속성을 변경하는 경우, 그리드 내가 너무 그것을 기대처럼/편집 편집 할 수 없습니다되고,하지만 난 단지 4/6 열을 사용하려면. 열 이름은 정확하고 논리는 동일하지만 열을 개별적으로 활성화하면 ReadOnly 속성이 변경되지 않고 열을 편집 할 수 없습니다. 편집 모드를 입력 할 때 디버거를 통해 스테핑, 내가 dgv.Columns("colCode").ReadOnly = Not EditModedgv.Columns("colCode").ReadOnly = False하지만 스테핑 과거로 평가 볼 수 ReadOnly 속성은 열이 모든 ReadOnly = True로 강제 dgv.ReadOnly = true 경우

답변

2

... 진정한 남아있다. 그래서 dgv.ReadOnly = False으로 설정하고 열에 대해서만 ReadOnly 속성을 true로 설정하십시오.

+0

그래서 grid 속성이 개별 열 속성을 재정의합니까? 좋은 일. – Alex

0

은 참조하십시오이-How to make a specific Column Uneditable In datagridview?

당신은 읽기 전용으로 열을 설정하는 방법에 대한 다양한 정보를 볼 수 있습니다.

에만 데이터 바인딩을 사용하기 전에 반드시 숙지 열을 만들 수 있습니다 : 당신이 열 내의 개별 세포 위해 무엇을해야하는 경우

this.dgrid.Columns("colName").ReadOnly = true 

, 다음 루프가이처럼 설정됩니다 :

this.dgridvwMain.Rows(index).Cells("colName").ReadOnly = true 

다른 방법은 CellBeginEdit 이벤트를 처리하고 셀을 비활성화해야 할 때 e.Cancel = True로 설정하는 것입니다.

Private Sub DataGridView_CellBeginEdit(sender As System.Object, e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridViewMsg.CellBeginEdit 
    If DataGridViewMsg.Rows(e.RowIndex).Cells("disable").Value = "Y" Then 
     e.Cancel = True 
    End If 
End Sub 

참고 :
How to: Make Columns Read-Only in the Windows Forms DataGridView Control DataGridViewColumn.ReadOnly Property

당신은 세 가지 수준에서 읽기 전용 속성을 설정할 수 있습니다. 전체 DataGridView 또는 전체 열 또는 전체 행을 ReadOnly로 만들 수 있습니다.

dataGridView1.ReadOnly = true; 

dataGridView1.Rows[index].ReadOnly = true; 

dataGridView1.Columns[index].ReadOnly = true; 

참고 :DataGridView.ReadOnly 속성은 열 또는 셀의 ReadOnly 속성을 재정의합니다. 먼저 false로 설정 한 다음 특정 열이나 셀에 대해 을 변경하십시오.

관련 문제