Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
KeyPress in DGV
lunedì 31 agosto 2009 - 09.24
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
sergio58
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 31 ago 2009 - 09:24
In un form ho un datagridview, ho sviluppato l'evento keypress del datagridview , ma quando schiaccio il tasto enter l'evento non si scatena, e non riesco ad intercettare il tasto.
Grazie a tutti
luxsor
Profilo
| Guru
1.079
messaggi | Data Invio:
lun 31 ago 2009 - 10:54
Ciao Sergio,
devi utilizzare l'evento KeyDown con all'interno il seguente codice:
evento keydown....
If e.KeyCode = Keys.Return Then
'il tuo codice da eseguire
End If
Fammi sapere
------------------------
Luxsor
sergio58
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 31 ago 2009 - 12:57
Grazie per la risposta, io ho fatto cosi,
Private Sub DataGridView2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView2.KeyDown
Dim i As Integer
If e.KeyCode = Keys.Return Then
i = DataGridView2.CurrentCell.Value
End If
End Sub
ma non si attiva, clicco il tasto enter all'interno della cella, ho fatto qualche altro errore ?
Ciao sergio.
luxsor
Profilo
| Guru
1.079
messaggi | Data Invio:
lun 31 ago 2009 - 14:03
>ma non si attiva, clicco il tasto enter all'interno della cella,
>ho fatto qualche altro errore ?
Cosa intendi per "Non si attiva"?
Hai dichiarando la variabile I come Integer, ma se nella cella è contenuto un valore diverso da un numero es Stirng, otterrai un errore di Casting.
Fammi sapere
------------------------
Luxsor
simbla79
Profilo
| Junior Member
129
messaggi | Data Invio:
lun 31 ago 2009 - 14:18
l'evento keydown lo scatena la datagridview e non la cella nella quale stai editando. se ti serve sapere il valore dopo che hai premuto invio usa l'evento CellEndEdit.
Spero di esserti stato utile.
Ciao
sergio58
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 31 ago 2009 - 14:24
La cella è impostata a valore numerico, solo che quando premo il tasto enter l'evento non si scatena.
Ho messo un punto di interruzione per verificarlo , ma non si blocca.
simbla79
Profilo
| Junior Member
129
messaggi | Data Invio:
lun 31 ago 2009 - 14:30
levento key dow non è interccettato menttre editi la cella se tu premi un qualsiasi tasto , esempio freccia giu o sin o des o giù mentre hai il focus sulla datagridview allora scateni l'evento key down se sei in modalità editor, quando scrivi del testo nella cella, l'evento key down non viene scatenato.
luxsor
Profilo
| Guru
1.079
messaggi | Data Invio:
lun 31 ago 2009 - 15:50
>La cella è impostata a valore numerico, solo che quando premo il tasto enter l'evento non si scatena.
>Ho messo un punto di interruzione per verificarlo , ma non si blocca.
Se ti posizioni in una cella del DataGridView e premi un tasto, tale tasto si può intercettato dall' evento KeyDown.
Se non riesci ad intercettarlo controlla Handler o il nome del DataGridView.
Metti il punto di interruzione sull'evento KeyDown
------------------------
Luxsor
simbla79
Profilo
| Junior Member
129
messaggi | Data Invio:
lun 31 ago 2009 - 16:15
x luxsor
io ho fatto una prova se la cella è readonly allora l'evento lo genera se invece è editabile non viene scatenato. eccetto per il return che si sposta in un altra cella.
Private Sub DataGridView1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown
MsgBox(e.KeyCode.ToString)
End Sub
luxsor
Profilo
| Guru
1.079
messaggi | Data Invio:
lun 31 ago 2009 - 16:34
Ciao Marco
>io ho fatto una prova se la cella è readonly allora l'evento
>lo genera se invece è editabile non viene scatenato. eccetto
>per il return che si sposta in un altra cella.
Quello che intendi tu, cioè se la cella è editabile non viene scatenato l'evento, vale solo se imposti EditMode = EditOnEnter
perchè l'Invio lo utilizza per entry della modifica della cella.
Cambia la proprietà in EditOnKeystrokeOrF2 o in un'altra e vedi.
X Sergio
non hai specificato se l'evento KeyDown deve essere una conseguenza di qualcosa....
------------------------
Luxsor
simbla79
Profilo
| Junior Member
129
messaggi | Data Invio:
lun 31 ago 2009 - 16:38
Ciao,
è già settato in quel modo, ma quello che intendo io, e presumo anche sergio, è che se sto digitando del testo all'interno della cella e premo invio esce dalla modalità di editign e l'evento keydown non gli si attiva.
CITO SERGIO
"End Sub
ma non si attiva, clicco il tasto ||||enter all'interno della cella||||, ho fatto qualche altro errore ?"
xè se no non vedo modo xè non debba funzionare
sergio58
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 31 ago 2009 - 16:58
Grazie a tutti per l'interessamento, comunque , uso VB2005 e le impostazioni sono con la cella a readonly e EditMode =EditOnKeystrokeOrF2 , ma l'evento non si scatena neanche premendo un tasto qualsiasi.
Questo è il codice che già avevo postato, il nome e l'handler sono esatti perchè fanno riferimento al datagridview2.
Private Sub DataGridView2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView2.KeyDown
Dim i As Integer
Dim Navigazione As New CustomDataGridView
If e.KeyCode = Keys.Return Then
i = DataGridView2.CurrentCell.Value
End If
End Sub
Credo che anche se lo provi tu, ti debba dare gli stessi risultati, non penso che solo sul mio computer non funzioni.
Sergio
luxsor
Profilo
| Guru
1.079
messaggi | Data Invio:
lun 31 ago 2009 - 16:59
>è già settato in quel modo, ma quello che intendo io, e presumo
>anche sergio, è che se sto digitando del testo all'interno della
>cella e premo invio esce dalla modalità di editign e l'evento
>keydown non gli si attiva.
Se sei in modalità Editing SI, (ma non è stato specificato)
Quindi non vengono scatenati tutti quegli eventi che genera il DataGridView.
Allora si deve usare l'evento che hai suggerito tu CellEndEdit, ma tale evento verrà scatenato indipendentemente dal tasto che premi per chiudere l'editing della cella cioè i tasti cursori.
X Sergio.
Confermi la modalità di Editing?
------------------------
Luxsor
luxsor
Profilo
| Guru
1.079
messaggi | Data Invio:
lun 31 ago 2009 - 17:03
Allega il progetto
------------------------
Luxsor
sergio58
Profilo
| Junior Member
80
messaggi | Data Invio:
lun 31 ago 2009 - 20:34
1137_DatagridWiev_CheckBox.zip
Hai ragione, penso che il progetto sia megli di tante spiegazioni
luxsor
Profilo
| Guru
1.079
messaggi | Data Invio:
mar 1 set 2009 - 00:41
Non hai allegato l'intero progetto, ma solo la soluzione (manca il form).
Riallega
------------------------
Luxsor
sergio58
Profilo
| Junior Member
80
messaggi | Data Invio:
mar 1 set 2009 - 13:58
1138_DatagridWiev_CheckBox.zip
Scusa, questo l'ho provato prima di inviarlo , dovrebbe andare bene:
luxsor
Profilo
| Guru
1.079
messaggi | Data Invio:
mar 1 set 2009 - 15:29
Allora Sergio,
nell'evento CellEnter (che viene generato ogni qualvolta entri in una cella del DGW),
hai utilizzato il metodo BeginEdit che comporta il passaggio dalla modalità Modifica della cella, quindi non predisposta agli eventi che vengono scatenati da DGW.
Questo metodo non serve se importi EditMode a livello di DGW.
Rimuovi tale metodo dall'evento:
' DataGridView2.BeginEdit(True)
Fammi sapere
------------------------
Luxsor
sergio58
Profilo
| Junior Member
80
messaggi | Data Invio:
mar 1 set 2009 - 16:07
Ciao luxsor, effettivamente non mi ricordavo di aver impostato quella riga, ma nella guida di msdn ho copiato la classe che vedi nel progetto.
Tale classe dovrebbe permettere di utilizzare il tasto enter al posto del TAB anche in modalità modifica, ma non sono riuscito ad implementarlo.
Sapresti darmi qualche suggerimento ?
luxsor
Profilo
| Guru
1.079
messaggi | Data Invio:
mar 1 set 2009 - 18:09
Infatti,
ma se vuoi utilizzare il Invio anziche il Tab lo devi disabilitare nelle proprietà del DGV.
Questo comporta però, che l'evento KEYDOWN non verrà mai chiamato.
Se desideri questo OK.
------------------------
Luxsor
sergio58
Profilo
| Junior Member
80
messaggi | Data Invio:
mar 1 set 2009 - 20:23
Scusa se tengo ancora aperto questo post, ho impostato tabStop=false (credo che sia questa la proprietà a cui facevi riferimento), ma il focus non và sulla cella adiacente a quella in cui ho premuto il tasto enter.
Praticamente non so come utilizzare la classe.
Grazie per la pazienza.
Sergio
luxsor
Profilo
| Guru
1.079
messaggi | Data Invio:
mar 1 set 2009 - 22:58
Purtroppo non c'è una funzione che ti permette di fare questo (almeno che io sappia).
Te lo devi gestire tramite codice dalla posizione della riga e colonna
------------------------
Luxsor
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !