DataGridViewの小技3
前回の続き「DataGridView」で頑張っているテクニック集
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
★セルを選択した場合の発生イベント
Private Sub DataGridView_CellBeginEdit(ByVal sender As Object,_ ByVal e As DataGridViewCellCancelEventArgs) _ Handles DataGridView.CellBeginEdit End Sub
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
★セルから離れる場合の発生イベント
Private Sub DataGridView_CellEndEdit(ByVal sender As Object,_ ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _ Handles DataGridView.CellEndEdit End Sub
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
★セルを編集できないようにする(オブジェクトレベルで設定)
DataGridView.EditMode = DataGridViewEditMode.EditProgrammatically
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
★セルを編集できないようにする(任意の列、行、セルを指定)
'DataGridViewの1番目の列を読み取り専用 DataGridView.Columns(0).ReadOnly = True 'DataGridViewの2番目の行を読み取り専用 DataGridView.Rows(1).ReadOnly = True 'DataGridViewの(1, 2)→(2番目の列,3番目の行)のセルを読み取り専用 DataGridView(1, 2).ReadOnly = True
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
★セルを編集できないようにする(セルイベントから実現①)
Private Sub DataGridView_CellBeginEdit(ByVal sender As Object, _ ByVal e As DataGridViewCellCancelEventArgs) _ Handles DataGridView.CellBeginEdit '編集できないようにする e.Cancel = True End Sub
※このサンプルはDataGridViewの任意のセルを選択した時に「CellBeginEdit」イベントが発生することを利用して無条件でキャンセルするようにして編集できなくしています。
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
★セルを編集できないようにする(セルイベントから実現②)
rivate Sub DataGridView_CellBeginEdit(ByVal sender As Object, _ ByVal e As DataGridViewCellCancelEventArgs) _ Handles DataGridView.CellBeginEdit '1つ前のカラムの値を確認する If DataGridView(DataGridView.CurrentCellAddress.X - 1, DataGridView.CurrentCellAddress.Y).Value <> 1 Then '編集できないようにする e.Cancel = True End If End Sub
※このサンプルはDataGridViewの任意のセルを選択した時に「CellBeginEdit」イベントが発生することを利用して1つ左側のセルが「1」以外の値を取った場合はキャンセルするようにして編集できなくしています。