PDA

View Full Version : سوال: نرفتن به سطر بعد در DataGridView با Enter



edisoon
جمعه 12 مهر 1387, 21:21 عصر
میخوام وقتی روی DataGridView دکمه Enter زده میشود به سطر بعد نرود و به جای این کار یک فرم دیگر را نمایش دهد. تا قسمتی که کلید Enter زده میشود و فرم دیگری نمایش داده شود مشکلی ندارم ولی میخواهم گرید به سطر بعد نرود و سرجایش باقی بماند

bardia goharbin
جمعه 12 مهر 1387, 21:30 عصر
Private Sub DGV_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DGV.KeyDown
If e.KeyCode = Keys.Enter Then
e.Handled = True
Form2.Show()
End If
End Sub

parsavb
یک شنبه 14 مهر 1387, 08:46 صبح
این رو هم امتحان کن



Public Class DataGridViewEnterMoveNext
Inherits DataGridView
Dim celWasEndEdit As DataGridViewCell
Private _EnterMoveNext As Boolean = True
<System.ComponentModel.DefaultValue(True)> _ Public Property OnEnterKeyMoveNext() As Boolean Get Return Me._EnterMoveNext End Get Set(ByVal value As Boolean) Me._EnterMoveNext = value
End Set

End Property
Private Sub DataGridView_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Me.CellEndEdit
Me.celWasEndEdit = Me(e.ColumnIndex, e.RowIndex)
End Sub
Private Sub DataGridView_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SelectionChanged ' if Enter Move Next should work andalso ' mouse button was NOT down ' we are checking mouse buttons because if select was changed ' by Mouse then we will NOT do our Enter Move Next If Me._EnterMoveNext AndAlso MouseButtons = 0 Then ' if selection is changed after Cell Editing If Me.celWasEndEdit IsNot Nothing AndAlso _ Me.CurrentCell IsNot Nothing Then ' if we are currently in the next line of last edit cell If Me.CurrentCell.RowIndex = Me.celWasEndEdit.RowIndex + 1 AndAlso _ Me.CurrentCell.ColumnIndex = Me.celWasEndEdit.ColumnIndex Then Dim iColNew As Integer Dim iRowNew As Integer ' if we at the last column If Me.celWasEndEdit.ColumnIndex >= Me.ColumnCount - 1 Then iColNew = 0 ' move to first column iRowNew = Me.CurrentCell.RowIndex ' and move to next row Else ' else it means we are NOT at the last column ' move to next column iColNew = Me.celWasEndEdit.ColumnIndex + 1 ' but row should remain same iRowNew = Me.celWasEndEdit.RowIndex End If Me.CurrentCell = Me(iColNew, iRowNew) ' ok set the current column End If End If Me.celWasEndEdit = Nothing ' reset the cell end edit
End If
End Sub
End Class