Procedura: convalidare l'input con il controllo DataGrid Windows Form
Nota
Benché il controllo DataGridView sostituisca il controllo DataGrid aggiungendovi funzionalità, il controllo DataGrid viene mantenuto per compatibilità con le versioni precedenti e per un eventuale uso futuro. Per altre informazioni, vedere Differenze tra i controlli DataGridView e DataGrid Windows Form.
Sono disponibili due tipi di convalida di input per il controllo Windows FormDataGrid. Se l'utente tenta di immettere un valore di tipo non accettabile per la cella, ad esempio una stringa in un numero intero, il nuovo valore non valido viene sostituito con il valore precedente. Questo tipo di convalida dell'input viene eseguito automaticamente e non può essere personalizzato.
L'altro tipo di convalida dell'input può essere usato per rifiutare eventuali dati inaccettabili, ad esempio un valore 0 in un campo che deve essere maggiore o uguale a 1 o una stringa inappropriata. Questa operazione viene eseguita nel set di dati scrivendo un gestore eventi per l'evento ColumnChanging o RowChanging . L'esempio seguente usa l'evento ColumnChanging perché il valore inaccettabile non è consentito per la colonna "Product" in particolare. È possibile utilizzare l'evento RowChanging per verificare che il valore di una colonna "Data di fine" sia successivo alla colonna "Data di inizio" nella stessa riga.
Per convalidare l'input dell'utente
Scrivere codice per gestire l'evento ColumnChanging per la tabella appropriata. Quando viene rilevato un input non appropriato, chiamare il SetColumnError metodo dell'oggetto DataRow .
Private Sub Customers_ColumnChanging(ByVal sender As Object, _ ByVal e As System.Data.DataColumnChangeEventArgs) ' Only check for errors in the Product column If (e.Column.ColumnName.Equals("Product")) Then ' Do not allow "Automobile" as a product. If CType(e.ProposedValue, String) = "Automobile" Then Dim badValue As Object = e.ProposedValue e.ProposedValue = "Bad Data" e.Row.RowError = "The Product column contains an error" e.Row.SetColumnError(e.Column, "Product cannot be " & _ CType(badValue, String)) End If End If End Sub
//Handle column changing events on the Customers table private void Customers_ColumnChanging(object sender, System.Data.DataColumnChangeEventArgs e) { //Only check for errors in the Product column if (e.Column.ColumnName.Equals("Product")) { //Do not allow "Automobile" as a product if (e.ProposedValue.Equals("Automobile")) { object badValue = e.ProposedValue; e.ProposedValue = "Bad Data"; e.Row.RowError = "The Product column contains an error"; e.Row.SetColumnError(e.Column, "Product cannot be " + badValue); } } }
Connessione il gestore eventi all'evento.
Inserire il codice seguente all'interno dell'evento del Load form o del relativo costruttore.
' Assumes the grid is bound to a dataset called customersDataSet1 ' with a table called Customers. ' Put this code in the form's Load event or its constructor. AddHandler customersDataSet1.Tables("Customers").ColumnChanging, AddressOf Customers_ColumnChanging
// Assumes the grid is bound to a dataset called customersDataSet1 // with a table called Customers. // Put this code in the form's Load event or its constructor. customersDataSet1.Tables["Customers"].ColumnChanging += new DataColumnChangeEventHandler(this.Customers_ColumnChanging);
Vedi anche
.NET Desktop feedback
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per