Imam klasu koja nasledjuje obican datagrid u kojem na Enter keyboard ulaz preprocesoram od strane forme i posaljem {down}. To mi je noephodno.
Evo koda:
Code:
Public Class DataGridKeyEvents
Inherits System.windows.Forms.DataGrid
'Private Const WM_KEYDOWN = &H100
'Private Const WM_KEYUP = &H101
Private pLastRowState As System.Data.DataColumnChangeEventArgs
Private pLastRowIndex As Integer
Public Property LastRowState() As System.Data.DataColumnChangeEventArgs
Get
Return pLastRowState
End Get
Set(ByVal Value As System.Data.DataColumnChangeEventArgs)
pLastRowState = Value
End Set
End Property
Public Property LastRowIndex() As Integer
Get
Return pLastRowIndex
End Get
Set(ByVal Value As Integer)
pLastRowIndex = Value
End Set
End Property
Public Event Before_Keyboard_Input(ByVal keyCode As Integer)
Protected Overrides Function ProcessCmdKey(ByRef msg _
As System.Windows.Forms.Message, ByVal keyData As _
System.Windows.Forms.Keys) As Boolean
Dim keyCode As Integer
keyCode = CInt(msg.WParam.ToInt32())
'ako je poruka poslata procesu sa parametrim 'Enter' keyboard ulaza, poslacemo 'Tab' i sa true reci da smo obradili dogadjaj
If keyCode = CInt(Keys.Enter) Then
'forma koja sadrzi grid ce preprocesirati 'Enter' ulaz u 'tab'
Me.Parent.PreProcessMessage(msg)
'okidamo dogadjaj da bi smo u gridu bili svesni koji je to keyboard ulaz u pitanju
RaiseEvent Before_Keyboard_Input(keyCode)
'Ovde saljemo keyboard ulaz 'Tab'
SendKeys.Send("{Down}")
Return True
'inace radimo default keyboard ulaz obradu
Else
RaiseEvent Before_Keyboard_Input(keyCode)
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End Function 'ProcessCmdKey
End Class
Public Class DataGridKeyEvents
Inherits System.windows.Forms.DataGrid
'Private Const WM_KEYDOWN = &H100
'Private Const WM_KEYUP = &H101
Private pLastRowState As System.Data.DataColumnChangeEventArgs
Private pLastRowIndex As Integer
Public Property LastRowState() As System.Data.DataColumnChangeEventArgs
Get
Return pLastRowState
End Get
Set(ByVal Value As System.Data.DataColumnChangeEventArgs)
pLastRowState = Value
End Set
End Property
Public Property LastRowIndex() As Integer
Get
Return pLastRowIndex
End Get
Set(ByVal Value As Integer)
pLastRowIndex = Value
End Set
End Property
Public Event Before_Keyboard_Input(ByVal keyCode As Integer)
Protected Overrides Function ProcessCmdKey(ByRef msg _
As System.Windows.Forms.Message, ByVal keyData As _
System.Windows.Forms.Keys) As Boolean
Dim keyCode As Integer
keyCode = CInt(msg.WParam.ToInt32())
'ako je poruka poslata procesu sa parametrim 'Enter' keyboard ulaza, poslacemo 'Tab' i sa true reci da smo obradili dogadjaj
If keyCode = CInt(Keys.Enter) Then
'forma koja sadrzi grid ce preprocesirati 'Enter' ulaz u 'tab'
Me.Parent.PreProcessMessage(msg)
'okidamo dogadjaj da bi smo u gridu bili svesni koji je to keyboard ulaz u pitanju
RaiseEvent Before_Keyboard_Input(keyCode)
'Ovde saljemo keyboard ulaz 'Tab'
SendKeys.Send("{Down}")
Return True
'inace radimo default keyboard ulaz obradu
Else
RaiseEvent Before_Keyboard_Input(keyCode)
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End Function 'ProcessCmdKey
End Class
U svakoj formi u kojoj imam taj grid koristim sledeci kod u 'CurrentCellChanged' handler-u:
Code:
Private Sub grdZaposleni_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdZaposleni.CurrentCellChanged
..........
..........
grdZaposleni.LastRowState = Nothing
grdZaposleni.LastRowIndex = grdZaposleni.CurrentRowIndex
End Sub
Private Sub grdZaposleni_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdZaposleni.CurrentCellChanged
..........
..........
grdZaposleni.LastRowState = Nothing
grdZaposleni.LastRowIndex = grdZaposleni.CurrentRowIndex
End Sub
Interesuje me da li je moguce deo koda
Code:
grdZaposleni.LastRowState = Nothing
grdZaposleni.LastRowIndex = grdZaposleni.CurrentRowIndex
grdZaposleni.LastRowState = Nothing
grdZaposleni.LastRowIndex = grdZaposleni.CurrentRowIndex
staviti u neki overrides metod slicno kao i 'ProcessCmdKey.' Hocu da pretabam metod 'CurrentCellChanged' da mi radi sve kao i obicno ali da poziva i ove dve linije koda na kraju. Kako se poziva metod roditeljske klase, verovatno je to ono sto mi treba...
kopca