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