DataGridView: Comment sélectionner la première cellule de la ligne en cours lors de la sélection Multiple est vrai

Je suis entrain de créer mon DataGridViewEx classe, hérité de la DataGridView.

Je veux créer une méthode pour la sélection de la première cellule d'une ligne actuelle, j'ai donc écrit ceci:

        ///<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 consiste à ajouter une nouvelle ligne à la grille et de commencer le montage de sa première cellule.

Ce code fonctionne très bien si la grille.MultiSelect = faux, mais si la grille.MultiSelect = vrai, alors il ne fonctionne pas comme prévu: toutes les cellules sont désélectionnés, première cellule de la dernière ligne est sélectionnée, mais !!! la cellule dans la dernière rangée de la colonne qui a été sélectionné en dernier obtient édité, au lieu de la première cellule!

C'est à quoi il ressemble:

1) je sélectionne certaines cellules:

_http://img13.imageshack.us/img13/2528/beforeadd.gif

2) Après avoir appuyé sur le bouton Ajouter:

_http://img211.imageshack.us/img211/847/afteradd.gif

Vous en remercie d'avance.

PS. Pourquoi ne puis-je pas ajouter des images?

InformationsquelleAutor nightcoder | 2009-04-24