Ciao a tutti!

Sto muovendo i miei primi passi con vb.net 2008/ado.net, e provengo dal mondo vb6/ado.

Nel creare una prima piccola applicazione che mi permetta di prendere familiarità con la nuova tecnologia sto incontrando qualche difficoltà.

Vi chiedo aiuto in particolare per questo:
Ho creato un progetto Windows Forms, ho inserito su un form una griglia, con un dataset, un tableadapter e un bindingsource. fin qui tutto ok.

La griglia funziona, così ho aggiunto un secondo form; l'idea è di inserire in questo secondo form i valori dei vari campi per permettere la modifica.

Quindi ho creato nel secondo form una textbox e nel codice di form1 ho aggiunto:

codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Using f As New frmEditAgenzia

        f.txtDescrizione.DataBindings.Add(New Binding("text", ComAgenzieBindingSource, "descrizione"))

        f.ShowDialog()

    End Using


End Sub
Questo codice mi lega il controllo del secondo form al bindingsource del primo, prendendo i dati dalla riga evidenziata nella griglia.

Anche qui tutto ok.

Il problema è che se io modifico i dati nella textbox, appena mi sposto su un altro controllo il dataset sottostante viene aggiornato, senza permettermi di fare la validazione.

Ho provato con l'evento Validating:

codice:
Private Sub txtDescrizione_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtDescrizione.Validating

    If txtDescrizione.Text = "" Then
        MsgBox("Valore non valido!", MsgBoxStyle.Critical, "Errore!")
        e.Cancel = True
    End If

End Sub
questo effettivamente funziona, ma il problema è che l'evento viene generato ogni volta che passo da un controllo all'altro.

In sostanza, io vorrei poter compilare tutti i controlli, magari anche con valori errati, e validarli tutti in un colpo solo, diciamo quando l'utente clicca sul pulsante OK del form.

A quel punto, se la validazione ha esito positivo, il dataset deve essere aggiornato.

Pensate che si possa fare, oppure devo rinunciare alla funzione databinding?


grazie a tutti!

ciao!!

Roberto