Como: Validar a entrada com o controle DataGrid do Windows Forms
Observação: |
---|
O DataGridView controle substitui e adiciona funcionalidade a DataGrid controle; no entanto, o DataGrid controle é mantida para compatibilidade com versões anteriores e para uso futuro, se você escolher. Para obter mais informações, consulte Diferenças entre Windows Forms DataGridView and DataGrid Controls. |
Há dois tipos de validação de entrada disponível para o Windows Forms DataGrid controle. Se o usuário tentar inserir um valor que é de um tipo de dados inaceitável para a célula, por exemplo uma seqüência de caracteres em um número inteiro, o novo valor inválido é substituído pelo valor antigo.Esse tipo de validação de entrada é concluído automaticamente e não pode ser personalizado.
O Outros tipo de validação de entrada pode ser usado para rejeitar quaisquer dados inaceitáveis, por exemplo, um valor 0 em um campo deve ser maior ou igual a 1 ou uma seqüência de caracteres inadequada.Isso é concluído no dataset, escrevendo um manipulador de eventos para o ColumnChanging ou RowChanging evento. O exemplo a seguir usa o ColumnChangingevento porque o valor inaceitável não permitido para a coluna "Produto" em particular. Você pode usar o RowChangingevento de verificação de que o valor de uma coluna "Data de término" é posterior a coluna "Data de início" na mesma linha.
Validar entrada do usuário
Escrever código para manipular o ColumnChanging evento para a tabela apropriada. Quando é detectada entrada inadequada, chamar o SetColumnError método para o DataRow objeto.
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 contians 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); } } }
//Handle column changing events on the Customers table private void Customers_ColumnChanging(System.Object sender, System.Data.DataColumnChangeEventArgs e) { //Only check for errors in the Product column if ( e.get_Column().get_ColumnName().Equals("Product") ) { //Do not allow "Automobile" as a product if ( e.get_ProposedValue().Equals("Automobile") ) { System.Object badValue = e.get_ProposedValue(); e.set_ProposedValue("Bad Data"); e.get_Row().set_RowError("The Product column contains an error"); e.get_Row().SetColumnError(e.get_Column(), "Product cannot be " + badValue); } } }
Conectar-se o manipulador de eventos ao evento.
Coloque o código a seguir dentro de um Load seu construtor ou evento.
' 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);
// 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.get_Tables().get_Item("Customers").add_ColumnChanging( new DataColumnChangeEventHandler(this.Customers_ColumnChanging));