2009-04-24 8 views
1

Je crée ma classe DataGridViewEx, héritée de DataGridView.
Je veux créer une méthode pour sélectionner la première cellule d'une ligne de courant, donc j'écrit ceci:DataGridView: Comment sélectionner la première cellule dans la ligne actuelle lorsque MultiSelect est vrai

 /// <summary> 
    /// The method selects first visible cell in a current row. 
    /// If current row is null, nothing is done. 
    /// If any cells are selected, they are unselected before selecting first cell. 
    /// </summary> 
    public void SelectFirstCellInCurrentRow() 
    { 
     if (CurrentRow == null) return; 

     ClearSelection(); 
     foreach (DataGridViewCell cell in CurrentRow.Cells) 
     { 
      if (cell.Visible) 
      { 
       cell.Selected = true; 
       return; 
      } 
     } 
    } 

Et je veux l'utiliser comme ceci par exemple:

 private void btnAdd_Click(object sender, EventArgs e) 
     { 
      bindingSource.Add(new Customer()); 
      bindingSource.MoveLast(); 
      grid.SelectFirstCellInCurrentRow(); 
      grid.BeginEdit(false); 
     }

Ma tâche est ajouter une nouvelle ligne à la grille et commencer à éditer sa première cellule.
Ce code fonctionne très bien si grid.MultiSelect = false, mais si grid.MultiSelect = true, alors cela ne fonctionne pas comme prévu: toutes les cellules sont désélectionnées, la première cellule de la dernière rangée est sélectionnée, mais !!! la cellule de la dernière ligne de la dernière colonne sélectionnée est éditée, au lieu de la première cellule!

Voici à quoi il ressemble:
1) Je sélectionne des cellules:
_http: //img13.imageshack.us/img13/2528/beforeadd.gif

2) Après avoir appuyez sur le bouton Ajouter:
_http: //img211.imageshack.us/img211/847/afteradd.gif

Merci d'avance.

PS. Pourquoi ne puis-je pas ajouter d'images?

Répondre

3

Au lieu de

cell.Selected = true; 

essayer

CurrentCell = cell; 
Questions connexes