2017-07-24 1 views
0

J'ai un WinFormApp avec un datagridview et j'essaie d'écrire une méthode qui fait quelque chose quand vous appuyez sur Entrée sur la ligne sélectionnée. Par exemple - le gridview affiche certaines données de ma base de données et il a 4 colonnes, après avoir fini d'éditer ces colonnes comme vous voulez, vous appuyez sur Entrée et les données seront sauvegardées dans la base de données avec les nouvelles valeurs. Actuellement, j'ai dans mon Form1()DataGridView: 'impossible de convertir du groupe de méthodes en clés

 dataGridView1.PreviewKeyDown += new PreviewKeyDownEventArgs(dataGridView1_PreviewKeyDown); 

que je ne pense pas est correct, et la méthode est la suivante:

void dataGridView1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      // do something 
     } 
    } 

Je suis assez nouveau à la programmation, donc une bonne explication sera vraiment apprécié.

Merci!

Répondre

0

Avez-vous essayé d'utiliser l'événement CellValueChanged? Si vous avez le code pour mettre à jour votre base de données, il devrait le faire automatiquement.

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
    { 
     MessageBox.Show("Test if works"); //it works 
    } 

EDIT-

Alternativement, si vous voulez seulement exécuter une commande lorsque vous appuyez sur Entrée dans une rangée/colonne sélectionnée, vous pouvez utiliser quelque chose comme

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
    { 
     if(e.ColumnIndex == 1) 
      { 
       MessageBox.Show("Test if works"); //it works 
      } 
    } 
0

Ici, DGV est un objet de DatawGridView, cet événement est déclenché uniquement lorsque l'utilisateur modifie le contenu de la cellule. Ce qui signifie que si une cellule a la valeur 'abc' et que l'utilisateur retape à nouveau 'abc' dans la même cellule, cet événement n'est pas déclenché. De même, si l'utilisateur après l'édition frappe la touche 'Échap' sur le clavier, alors cet événement n'est pas déclenché. Cela signifie, après l'édition, que si l'utilisateur appuie sur la touche Entrée/Retour du clavier, cet événement est déclenché à condition que l'ancienne et la nouvelle valeur ne soient pas identiques.

private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
    //code to save your changed data 
}