Hi,
inzwischen habe ich eine Idee, die mir sehr viel einfacher zu sein scheint.
Ich verlagere die Verarbeitung von ENTER und RETURN einfach in die Routine ProcessCmdKey !
Denn diese Routine wird in jedem Fall angesprungen. Und das unabhängig davon in welchem Zustand die dgv sich befindet (edit mode, non-edit mode).
Das löst fast mein Problem.
Dumm ist nur, dass NACH dem Ende der ProcessCmdKey Routine, dann noch dgv Events ausgelöst werden. Denn im "edit mode", wird nun noch die nächste Zeile selektiert. Und das kollidiert mit meiner Verarbeitung.
Wenn ich also verhindern könnte, dass im "edit mode" mit ENTER bzw. RETURN die nächste Zeile ausgewählt wird, wäre ich vollkommen happy !
Kann man in der ProcessCmdKey Routine ENTER bzw. RETURN als "handled" kennzeichnen. Ich hab mal ganz frech die Routine mit "Return False" beendet, aber das hilft leider nicht.
Ansonsten könnte vielleicht die Sache mit der abgeleiteten dgv weiter helfen. Vielleicht kann man ja eine Spalte so definieren, dass der edit mode, sich nicht in die Zeilensteuerung einmischt. Aber dazu fehlen mir wohl die Kenntnisse.
inzwischen habe ich eine Idee, die mir sehr viel einfacher zu sein scheint.
Ich verlagere die Verarbeitung von ENTER und RETURN einfach in die Routine ProcessCmdKey !
Denn diese Routine wird in jedem Fall angesprungen. Und das unabhängig davon in welchem Zustand die dgv sich befindet (edit mode, non-edit mode).
VB.NET-Quellcode
- Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message,
- ByVal keyData As System.Windows.Forms.Keys) As Boolean
- If msg.Msg = WM_KEYDOWN AndAlso msg.WParam.ToInt32 = Keys.Return Then
- Ex = ((msg.LParam.ToInt32() And KF_EXTENDED) = KF_EXTENDED)
- If Ex Then
- Debug.Print("ProcessCmdKey --> ENTER key was depressed")
- 'Process ENTER key ...
- Else
- Debug.Print("ProcessCmdKey --> RETURN key was depressed")
- 'Process RETURN key ...
- End If
- Return MyBase.ProcessCmdKey(msg, keyData)
Das löst fast mein Problem.
Dumm ist nur, dass NACH dem Ende der ProcessCmdKey Routine, dann noch dgv Events ausgelöst werden. Denn im "edit mode", wird nun noch die nächste Zeile selektiert. Und das kollidiert mit meiner Verarbeitung.
Wenn ich also verhindern könnte, dass im "edit mode" mit ENTER bzw. RETURN die nächste Zeile ausgewählt wird, wäre ich vollkommen happy !
Kann man in der ProcessCmdKey Routine ENTER bzw. RETURN als "handled" kennzeichnen. Ich hab mal ganz frech die Routine mit "Return False" beendet, aber das hilft leider nicht.
Ansonsten könnte vielleicht die Sache mit der abgeleiteten dgv weiter helfen. Vielleicht kann man ja eine Spalte so definieren, dass der edit mode, sich nicht in die Zeilensteuerung einmischt. Aber dazu fehlen mir wohl die Kenntnisse.
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Peter329“ ()