Condividi tramite


Procedura: esplorare dati in Windows Form

In un'applicazione Windows il modo più semplice per spostarsi tra i record in un'origine dati consiste nell'associare un BindingSource componente all'origine dati e quindi associare i controlli a BindingSource. È quindi possibile usare il metodo di spostamento predefinito su BindingSource , MovePrevious MoveNextMoveLaste .MoveFirst L'uso di questi metodi regola le Position proprietà e Current dell'oggetto BindingSource in modo appropriato. È anche possibile trovare un elemento e impostarlo come elemento corrente impostando la Position proprietà .

Per incrementare la posizione in un'origine dati

  1. Impostare la Position proprietà dell'oggetto BindingSource per i dati associati sulla posizione del record su cui passare. Nell'esempio seguente viene illustrato l'utilizzo del MoveNext metodo di BindingSource per incrementare la Position proprietà quando nextButton si fa clic su . L'oggetto BindingSource è associato alla Customers tabella di un set di dati Northwind.

    Nota

    L'impostazione della Position proprietà su un valore superiore al primo o all'ultimo record non genera un errore, perché .NET Framework non consente di impostare la posizione su un valore esterno ai limiti dell'elenco. Se è importante nell'applicazione sapere se è passato il primo o l'ultimo record, includere la logica per verificare se si supererà il numero di elementi dati.

    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
    

Per verificare se è stata superata la fine o l'inizio

  1. Creare un gestore eventi per l'evento PositionChanged. Nel gestore è possibile verificare se il valore della posizione proposta ha superato il conteggio effettivo degli elementi dati.

    Nell'esempio seguente viene illustrato come verificare se è stato raggiunto l'ultimo elemento dati. Nell'esempio, se si è all'ultimo elemento, il pulsante Avanti nel modulo è disabilitato.

    Nota

    Tenere presente che, se si modifica l'elenco che si sta spostando nel codice, è necessario riabilitare il pulsante Avanti , in modo che gli utenti possano esplorare l'intera lunghezza del nuovo elenco. Tenere inoltre presente che l'evento precedente PositionChanged per l'evento specifico BindingSource con cui si sta lavorando deve essere associato al relativo metodo di gestione degli eventi. Di seguito è riportato un esempio di metodo per la gestione dell'evento 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
    

Per trovare un elemento e impostarlo come elemento corrente

  1. Trovare il record che si desidera impostare come elemento corrente. A tale scopo, è possibile usare il Find metodo di , se l'origine BindingSourcedati implementa IBindingList. Alcuni esempi di origini dati che implementano IBindingList sono BindingList<T> e 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
    

Vedi anche