Condividi tramite


Procedura: esplorare dati in Windows Form

Il modo più semplice di spostarsi tra i record di un'origine dati in un'applicazione Windows consiste nell'associare un componente BindingSource all'origine dati e poi nell'associare i controlli alla classe BindingSource. In seguito sarà possibile applicare il metodo di spostamento incorporato alla classe BindingSource, ad esempio MoveNext, MoveLast, MovePrevious e MoveFirst. Con questi metodi vengono adattate in maniera appropriata le proprietà Position e Current della classe BindingSource. È inoltre possibile trovare un elemento e impostarlo come elemento corrente impostando la proprietà Position.

Per incrementare la posizione in un'origine dati

  • Impostare la proprietà Position della classe BindingSource per i dati associati sulla posizione del record su cui spostarsi. Nell'esempio riportato di seguito viene illustrato l'utilizzo del metodo MoveNext della classe BindingSource per incrementare la proprietà Position quando si fa clic su nextButton. La classe BindingSource è associata alla tabella Customers di un dataset Northwind.

    Nota

    Se la proprietà Position viene impostata su un valore oltre il primo o l'ultimo record non viene generato alcun errore, perché .NET Framework non consente di impostare la posizione su un valore non incluso nelle associazioni dell'elenco. Se è importante che l'applicazione sia in grado di rilevare se è stato oltrepassato il primo o l'ultimo record, includere una logica per verificare se viene superato il numero degli elementi di dati.

    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();
    }
    

Per verificare se è stato superato il primo o l'ultimo elemento

  • Creare un gestore eventi per l'evento PositionChanged. Nel gestore eventi è possibile verificare se i valori della posizione proposta hanno superato il numero effettivo degli elementi di dati.

    Nell'esempio che segue viene illustrato come verificare se è stato raggiunto l'ultimo elemento di dati. Se ci si trova sull'ultimo elemento, il pulsante Avanti del form verrà disabilitato.

    Nota

    Se si modifica l'elenco in cui ci si sposta nel codice, sarà necessario riattivare il pulsante Avanti in modo che gli utenti possano spostarsi all'interno di tutto il nuovo elenco. Inoltre, l'evento PositionChanged per la specifica classe BindingSource che si sta utilizzando deve essere associato al relativo metodo di gestione degli eventi. Di seguito viene riportato un esempio di metodo per la gestione dell'evento 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;
    }
    

Per trovare un elemento e impostarlo come elemento corrente

  • Trovare il record che si desidera impostare come elemento corrente. A tale scopo, utilizzare il metodo Find della classe BindingSource se l'origine dati implementa l'interfaccia IBindingList. Tra le origini dati di esempio che implementano l'interfaccia IBindingList sono annoverate BindingList<T> e 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;
    }
    

Vedere anche

Concetti

Origini dati supportate da Windows Form

Notifica delle modifiche nell'associazione dati dei Windows Form

Associazione dati e Windows Form

Altre risorse

Associazione ai dati di Windows Form