指定したセルの編集を出来ないようにする
グリッドのすべてのセルを編集不可にする
C1TrueDBGrid1.AllowUpdate = False
特定のセルを編集不可にする
この場合、編集モードに入る直前に発生するBeforeColEditイベントを利用し、Cancel引数をTrueにします。Cancel引数をTrueにすると編集モードへ移行せず、編集出来なくなります。
下の例では1行目の得意先コード列を編集不可にしています。
Private Sub C1TrueDBGrid1_BeforeColEdit( _
ByVal sender As Object, _
ByVal e As C1.Win.C1TrueDBGrid.BeforeColEditEventArgs) _
Handles C1TrueDBGrid1.BeforeColEdit
If (C1TrueDBGrid1.Row = 0) And _
(e.Column.DataColumn.DataField = "得意先CD") Then
e.Cancel = True
End If
End Sub
特定の行や列を編集不可にする
列の場合は簡単です。以下ではLockedプロパティをTrueに設定し、得意先コード列を編集不可にしています。
C1TrueDBGrid1.Splits(0).DisplayColumns("得意先コード").Locked = True
行の場合は前述したBeforeColEditイベントを利用し制御します
Private Sub C1TrueDBGrid1_BeforeColEdit( _
ByVal sender As Object, _
ByVal e As C1.Win.C1TrueDBGrid.BeforeColEditEventArgs) _
Handles C1TrueDBGrid1.BeforeColEdit
If RadioButton2.Checked Then
If (C1TrueDBGrid1.Row = 0) And _
(e.Column.DataColumn.DataField = "得意先コード") Then
e.Cancel = True
End If
ElseIf RadioButton5.Checked Then
If (C1TrueDBGrid1.Row = 2) Then
e.Cancel = True
End If
End If
End Sub
今回利用したサンプル
Public Class frmGrid3
Private dt As DataTable = Nothing
'''
''' サンプルデータ作成
'''
'''
Private Sub initializeData()
Dim i As Integer
Dim drow As DataRow
dt = New DataTable
dt.Columns.Add("No", GetType(Integer))
dt.Columns.Add("得意先コード", GetType(Integer))
dt.Columns.Add("得意先名", GetType(String))
For i = 1 To 100
drow = dt.NewRow
drow(0) = i
drow(1) = i + 1000
drow(2) = "得意先 " & Format(CInt(drow(1)), "0000")
dt.Rows.Add(drow)
Next
C1TrueDBGrid1.SetDataBinding(dt, "", True)
End Sub
'''
''' TrueDBGridの初期設定
'''
'''
Private Sub initializeGrid()
C1TrueDBGrid1.RowHeight = 18
C1TrueDBGrid1.AlternatingRows = True
C1TrueDBGrid1.EvenRowStyle.BackColor = Color.AliceBlue
End Sub
Private Sub frmGrid3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
initializeGrid() 'TrueDBGridの初期設定
initializeData() 'サンプルデータ作成
End Sub
Private Sub RadioButton_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, _
RadioButton3.CheckedChanged, RadioButton4.CheckedChanged, _
RadioButton5.CheckedChanged
C1TrueDBGrid1.AllowUpdate = True
If C1TrueDBGrid1.Splits(0).DisplayColumns.Count > 0 Then
C1TrueDBGrid1.Splits(0).DisplayColumns("得意先コード").Locked = False
End If
If RadioButton2.Checked Then
'すべてのセルを編集不可
C1TrueDBGrid1.AllowUpdate = False
ElseIf RadioButton4.Checked Then
'得意先コード列を編集不可
If C1TrueDBGrid1.Splits(0).DisplayColumns.Count > 0 Then
C1TrueDBGrid1.Splits(0).DisplayColumns("得意先コード").Locked = True
End If
End If
End Sub
Private Sub C1TrueDBGrid1_BeforeColEdit( _
ByVal sender As Object, _
ByVal e As C1.Win.C1TrueDBGrid.BeforeColEditEventArgs) _
Handles C1TrueDBGrid1.BeforeColEdit
If RadioButton3.Checked Then
'1行目の得意先コード列を編集不可
If (C1TrueDBGrid1.Row = 0) And _
(e.Column.DataColumn.DataField = "得意先コード") Then
e.Cancel = True
End If
ElseIf RadioButton5.Checked Then
'3行目を編集不可
If (C1TrueDBGrid1.Row = 2) Then
e.Cancel = True
End If
End If
End Sub
End Class
履歴
- 2011/11/06
- 公開

