>Public Class dgv > Inherits DataGridView > Protected Overloads Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean > If keyData = Keys.Enter Then > Return Me.ProcessTabKey(keyData) > Else > Return MyBase.ProcessDialogKey(keyData) > End If > End Function > Protected Overrides Sub OnCellEnter(ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) > If Me.Columns(e.ColumnIndex).ReadOnly = True Then > SendKeys.Send("{TAB}") > Exit Sub > End If > MyBase.OnCellEnter(e) > End Sub >