2012-12-16 2 views
0

J'essaie de détecter l'événement DataGridViewCell en sélectionnant le mode non en mode édition en C#. C'est le code ci-dessous est montre ici:Je veux détecter si la cellule DataGridView quitte l'événement uniquement en sélectionnant le mode

 private void dgv_CellLeave(object sender, DataGridViewCellEventArgs e) 
     { 
       if (dgvC.CurrentCell.ColumnIndex == 0) 
       { 
        if (dgv.CurrentCell.Value == null) 
         MessageBox.Show("You have to enter somthing"); 
       } 
     } 

    private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
    { 
       if (dgv.CurrentCell.ColumnIndex == 0) 
       { 
        if (dgv.CurrentCell.Value.ToString() !="S") 
         MessageBox.Show("You have to enter S"); 
       } 

} 

ci-dessus à des événements fonctionnent correctement lorsque je choisissais la cellule de grille, mais ils ne fonctionnent pas lors de la modification de la cellule. Signifie que dans les deux cas l'événement de congé se produit. Donc, je veux détecter la cellule actuelle est en mode d'édition ou de sélection et après que je dois placer le curseur dans la même cellule, cela ne devrait pas être changé. Quelqu'un peut-il me dire comment puis-je le faire?

Répondre

1

bonjour il essaie d'utiliser cet événement.

private void dataGridView2_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 
    { 
     if (dataGridView2.IsCurrentCellDirty) 
      if (e.ColumnIndex == 0) 
      { 
       if (string.IsNullOrWhiteSpace(dataGridView2[e.ColumnIndex, e.RowIndex].EditedFormattedValue.ToString())) 
       { 
        e.Cancel = true; 
        MessageBox.Show("Please enter some text before you leave."); 
       } 
       else if (dataGridView2[e.ColumnIndex, e.RowIndex].EditedFormattedValue.ToString() != "S") 
       { 
        e.Cancel = true; 
        MessageBox.Show("You have to enter S"); 
       } 
      } 
    } 
} 
+0

ouais y répond comme il voulait un événement qui se déclenche lorsque vous ne l'édition .. mais il vaut la peine de noter que pour ceux qui travaillent pour quand on s'éloigne d'une cellule pendant l'édition .. CellEndEdit et CellParsing font – barlop

0

Sur le mode d'édition de cellule, n'utilisez pas CurrentCell, utilisez simplement le paramètre "e" pour trouver une cellule.

exemple de code:

private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.ColumnIndex == 0) 
    { 
     if (dgv[e.ColumnIndex, e.RowIndex].Value.ToString() !="S") 
     { 
      MessageBox.Show("You have to enter S"); 
     } 
    } 
} 
+0

CellEndEdit comme CellParsing, pour le faire alors que la cellule est en cours d'édition, mais lorsque la cellule n'est pas en cours de modification, Cell Valider est l'un – barlop

Questions connexes