Partager via


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

Dans une application Windows, le moyen le plus simple de parcourir les enregistrements d’une source de données consiste à lier un BindingSource composant à la source de données, puis à lier des contrôles au BindingSourcefichier . Vous pouvez ensuite utiliser la méthode de navigation intégrée sur ce BindingSource type MoveNext, MoveLastMovePrevious et MoveFirst. L’utilisation de ces méthodes ajuste les propriétés et Current les Position propriétés appropriéesBindingSource. Vous pouvez également trouver un élément et le définir comme élément actif en définissant la Position propriété.

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

  1. Définissez la Position propriété de BindingSource vos données liées sur la position d’enregistrement à atteindre. L’exemple suivant illustre l’utilisation de la MoveNext méthode de l’incrémentation BindingSource de la Position propriété lorsque le nextButton clic est fait. Il BindingSource est associé à la Customers table d’un jeu de données Northwind.

    Remarque

    La définition de la Position propriété sur une valeur au-delà du premier ou du dernier enregistrement n’entraîne pas d’erreur, car .NET Framework ne vous permet pas de définir la position sur une valeur en dehors des limites de la liste. S’il est important dans votre application de savoir si vous avez dépassé le premier ou le dernier enregistrement, incluez la logique pour tester si vous dépasserez le nombre d’éléments de données.

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

Pour case activée si vous avez passé la fin ou le début

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

    L’exemple suivant montre comment tester si vous avez atteint le dernier élément de données. Dans l’exemple, si vous êtes au dernier élément, le bouton Suivant du formulaire est désactivé.

    Remarque

    N’oubliez pas que si vous modifiez la liste que vous naviguez dans le code, vous devez réactiver le bouton Suivant afin que les utilisateurs puissent parcourir toute la longueur de la nouvelle liste. En outre, sachez que l’événement ci-dessus PositionChanged pour l’élément spécifique BindingSource avec lequel vous travaillez doit être associé à sa méthode de gestion des événements. Voici un exemple de méthode permettant de gérer l’événement PositionChanged :

    void customersBindingSource_PositionChanged(object sender, EventArgs e)
    {
        if (customersBindingSource.Position == customersBindingSource.Count - 1)
            nextButton.Enabled = false;
        else
            nextButton.Enabled = true;
    }
    
    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
    

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

  1. Recherchez l’enregistrement que vous souhaitez définir comme élément actif. Vous pouvez le faire à l’aide de la Find méthode du , si votre source de données implémente IBindingList.BindingSource Voici quelques exemples de sources de données qui implémentent IBindingList et BindingList<T>DataView.

    void findButton_Click(object sender, EventArgs e)
    {
        int foundIndex = customersBindingSource.Find("CustomerID", "ANTON");
        customersBindingSource.Position = foundIndex;
    }
    
    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
    

Voir aussi