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
Intercettare KeyPress su DataGrid
lunedì 25 luglio 2005 - 14.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
fabcri
Profilo
| Newbie
28
messaggi | Data Invio:
lun 25 lug 2005 - 14:57
Salve, ho un datagrid con "TableStyle". Vorrei intercettare l'evento keypress del tasto invio su una particolare colonna, ma non riesco a frlo. Con il controllo textBox funziona,
sapete dirmi perchè ?
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
lun 25 lug 2005 - 17:58
Dovresti ereditare la datagrid in una tua classe dove gestisci l'evento (naturalmente dopo dovrai mettere il nuovo controllo a video)
Esempio:
public class MyGrid : System.Windows.Forms.DataGrid
{
private const int WM_KEYDOWN = 0x100;
private const int WM_KEYUP = 0x101;
protected override bool ProcessKeyPreview(ref System.Windows.Forms.Message m)
{
Keys keyCode = (Keys)(int)m.WParam & Keys.KeyCode;
if((m.Msg == WM_KEYDOWN || m.Msg == WM_KEYUP)
&& keyCode == Keys.Enter )
{
MessageBox.Show("Beccato");
return false;
}
return true;
}
fabcri
Profilo
| Newbie
28
messaggi | Data Invio:
lun 25 lug 2005 - 20:54
Ho creato un controllo come dici, funziona, ma ho un problemino.
Devo decidere cosa fare digitando il tasto dal codice della mia applicazione, e non dal controllo. In poche parole ho inserito il nuovo controllo e qualunque tasto premo ottengo la finestra beccato!!.
Come devo procedere ?
fabcri
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mar 26 lug 2005 - 00:38
>Devo decidere cosa fare digitando il tasto dal codice della mia
>applicazione, e non dal controllo.
Se non vuoi gestire lì il tasto enter prova a restituire un evento, implementa il gestore e aggiungi l'evento sulla grid della form
In poche parole ho inserito
>il nuovo controllo e qualunque tasto premo ottengo la finestra
>beccato!!.
Non è che dici il falso, dici solamente cose non vere :)).
Visto che mi hai incuriosito perchè mi sembrava impossibile quello che dicevi, ho provato ad aggiungere un campo textbox sulla mia form di prova e a vedere se il "beccato" usciva sempre.
Esce solo se premi enter su una cella del datagrid (cvd).
Visto che una prova fisica vale di più della sola parola allego il progettino scritto con SharpDevelop (per inserirla su VS2003 basta sostituire la form principale con quella allegata).
fabcri
Profilo
| Newbie
28
messaggi | Data Invio:
mar 26 lug 2005 - 09:34
Scusa se sono stato poco chiaro nella risposta precedente. Io avevo creato un controllo "MyDataGrid" con il codice che mi hai postato, e funzionava allo stesso modo dell'allegato precedente.
I problemi non stanno nel codice, ma in quello che devo ottenere. Es. devo avere un datagrid dove posso muovermi con i tasti freccia, dare invio e nel momento in cui digito invio leggere il valore della cella selezionata, fare delle operazioni nel database ecc.
Di conseguenza ho provato come dici a creare il controllo "MyDataGrid". Nel nuovo controllo "MyDataGrid" devo avere un nuovo evento nella lista degli eventi.
L'perazione che deve avvenire deve essere decisa dall'applicazione e non dal controllo della libreria. Puoi chiarirmi meglio quest'aspetto ?
Ti ringrazio in anticipo per il tuo aiuto.
P.S. Ho visto che usi SharopDevelop, anche io ne faccio uso.
Ti volevo chiedere se hai riscontrato dei problemi con il "TabControl" e datagrid al suo interno in fase di creazione del form ?
fabcri
fabcri
Profilo
| Newbie
28
messaggi | Data Invio:
mer 27 lug 2005 - 10:09
P.S. Altra cosa, in questo modo i tasti freccia funzionano ?
fabcri
fabcri
Profilo
| Newbie
28
messaggi | Data Invio:
mer 27 lug 2005 - 13:00
Qualcuno mi aiuti........ Maledetta Datagrid di .net .........
Ho provato a fare:
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
if(keyData == Keys.F1)
{
MessageBox.Show("F1");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
Adesso riesco ad intercettare il tasto F1 e i tasti freccia funzionano.
Adesso il mio problema è:
Dalla mia form in cui uso il nuovo controllo, voglio che schiacciando il tasto "F1" il datagrid scompaia !
Si puo' fare ?
fabcri
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 !