2011-10-22 1 views
1

J'ai un problème dans "gridview" de l'application où je veux changer la cellule en entrant plutôt que la touche de tabulation.Gridview appuyez sur la touche pour aller à la cellule suivante

I GOT CERTAINS DE CODE PAREIL et à chaque touche événement keyDown ....

private void GridView1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     e.Handled = true; 
     SendKeys.Send("{TAB}"); 
    } 
} 

mais il fonctionne après j'avoir des données déjà.

Je veux, c'est pressant Acceda doit fonctionner comme onglet à la nouvelle ligne est générée dans gridview

Répondre

1

vous pouvez essayer comme ça ..

Pour gérer les KeyDown et les événements KeyPress pour le contrôle d'édition juste gérer l'événement EditingControlShowing et accéder aux événements sur le contrôle d'édition. Consultez ce lien pour more info

Cela dit, vous devez dériver de DataGridView pour faire ce que vous voulez. Cela est dû à la façon dont la gestion du clavier fonctionne pour les contrôles contenus.

Voici le code que vous devez faire Enter déplacer le focus clé à droite:

public class dgv : DataGridView 
{ 
protected override bool ProcessDialogKey(Keys keyData) 
{ 
    Keys key = (keyData & Keys.KeyCode); 
    if (key == Keys.Enter) 
    { 
     return this.ProcessRightKey(keyData); 
    } 
    return base.ProcessDialogKey(keyData); 
} 
protected override bool ProcessDataGridViewKey(KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     return this.ProcessRightKey(e.KeyData); 
    } 
    return base.ProcessDataGridViewKey(e); 
    } 

} 

je l'espère vous aide ...

+0

La solution pour remplacer les méthodes ProcessDialogKey et ProcessDataGridViewKey a fait l'affaire juste bien! Merci pour la bonne solution. Cela est également expliqué à: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.processdatagridviewkey.aspx –

Questions connexes