2016-08-09 16 views
0

私は、ユーザーが別の項目に入力して終了し、「編集」状態できるアプリケーションを作っています。編集状態に入ると、DataGridViewの特定の列を有効にし、終了するときに無効にします。以下のコードは、ブール値EditModeが変更されたときに実行されます。読み取り専用

'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のReadOnlyプロパティを変更すると、グリッドは、私はあまりにもそれを期待するように編集可能/編集不可となりますが、私は唯一の4/6の列を有効にしたいです。列名は正しく、ロジックは同じですが、列を個別に有効にするとReadOnlyプロパティが変更されず、列を編集できません。 dgv.ReadOnly = trueが、その後の列はすべてReadOnly = Trueことを余儀なくされている場合は、デバッガのステップ実行、編集モードに入るとき、私はdgv.Columns("colCode").ReadOnly = Not EditModedgv.Columns("colCode").ReadOnly = Falseに評価見ることができますが、過去をステッピング、ReadOnlyプロパティは...

答えて

2

真のまま。 したがって、dgv.ReadOnly = Falseと設定し、列のReadOnlyプロパティをtrueに設定します。

+0

だから、グリッドプロパティは、個々の列プロパティをオーバーライドしますか?知って良いこと。 – 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

あなたは3つのレベルでReadOnlyプロパティを設定することができます。 DataGridView全体または列全体または行全体をReadOnlyにすることができます。

dataGridView1.ReadOnly = true; 

dataGridView1.Rows[index].ReadOnly = true; 

dataGridView1.Columns[index].ReadOnly = true; 

注:DataGridView.ReadOnlyプロパティ列またはセルのReadOnlyプロパティをオーバーライドします。最初にそれをfalseに設定し、特定の列またはセルに対して を変更します。

関連する問題