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
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 allaCustomers
tabella di un set di datiNorthwind
.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
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
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
.NET Desktop feedback