Comment : naviguer au sein des données dans les Windows Forms

Dans une application Windows, la manière la plus simple de circuler entre les enregistrements dans une source de données est de lier un composant BindingSource à la source de données et puis de lier les contrôles à la BindingSource. Vous pouvez utiliser ensuite la méthode de navigation intégrée sur la BindingSource telle que MoveNext, MoveLast, MovePrevious et MoveFirst. L'utilisation de ces méthodes règle convenablement les propriétés Position et Current de la BindingSource. Vous pouvez également rechercher un élément et le définir comme élément actuel en définissant la propriété Position.

Pour incrémenter la position dans une source de données

  • Définissez, pour la propriété Position de l'objet BindingSource de vos données liées, la position de l'enregistrement auquel vous voulez accéder. L'exemple suivant illustre l'utilisation de la méthode MoveNext du BindingSource pour incrémenter la propriété Position lorsque vous cliquez sur nextButton. L'objet BindingSource est associé à la table Customers du groupe de données Northwind.

    Notes

    La définition de la propriété Position avec une valeur au-delà du premier ou du dernier enregistrement ne génère pas d'erreur puisque le .NET Framework ne vous permet pas de définir, pour la position, une valeur en dehors des limites de la liste. S'il est important, pour l'application, de savoir si vous avez dépassé le premier ou le dernier enregistrement, incluez une logique pour vérifier si vous dépassez le nombre d'éléments de données.

    Private Sub nextButton_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles nextButton.Click
        Me.customersBindingSource.MoveNext()
    End Sub
    
    private void nextButton_Click(object sender, System.EventArgs e)
    {
        this.customersBindingSource.MoveNext();
    }
    

Pour vérifier si vous avez dépassé le début ou la fin

  • Créez un gestionnaire d'événements pour l'événement PositionChanged. Dans le gestionnaire, vous pouvez vérifier si la valeur de position proposée a effectivement dépassé le nombre d'éléments de données.

    L'exemple suivant montre comment vous pouvez vérifier si vous avez atteint le dernier élément de données. Dans l'exemple, lorsque vous vous trouvez sur le dernier élément, le bouton Suivant est désactivé.

    Notes

    Si vous modifiez la liste actuellement parcourue dans le code, réactivez le bouton Suivant pour que les utilisateurs puissent parcourir la nouvelle liste sur toute sa longueur. En outre, sachez que l'événement PositionChanged ci-dessus du BindingSource spécifique avec lequel vous travaillez doit être associé à sa méthode de gestion d'événements. L'exemple suivant illustre une méthode visant à gérer l'événement PositionChanged :

    Sub customersBindingSource_PositionChanged(ByVal sender As Object, _
        ByVal e As EventArgs)
    
        If customersBindingSource.Position = _
            customersBindingSource.Count - 1 Then
            nextButton.Enabled = False
        Else
            nextButton.Enabled = True
        End If
    End Sub
    
    void customersBindingSource_PositionChanged(object sender, EventArgs e)
    {
        if (customersBindingSource.Position == customersBindingSource.Count - 1)
            nextButton.Enabled = false;
        else
            nextButton.Enabled = true;
    }
    

Pour rechercher un élément et le définir comme élément actuel

  • Recherchez l'enregistrement que vous souhaitez définir comme élément actuel. Pour ce faire, utilisez la méthode Find de l'objet BindingSource, si votre source de données implémente IBindingList. Quelques exemples de sources de données qui implémentent IBindingList sont BindingList<T> et DataView.

    Sub findButton_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles findButton.Click
        Dim foundIndex As Integer = customersBindingSource.Find("CustomerID", _
            "ANTON")
        customersBindingSource.Position = foundIndex
    End Sub
    
    void findButton_Click(object sender, EventArgs e)
    {
        int foundIndex = customersBindingSource.Find("CustomerID", "ANTON");
        customersBindingSource.Position = foundIndex;
    }
    

Voir aussi

Concepts

Sources de données prises en charge par les Windows Forms

Notification de modifications dans la liaison de données Windows Forms

Liaison de données et Windows Forms

Autres ressources

Liaison de données Windows Forms