Управление вводом запятой для представления таблицы данных при проверке числового ввода данных - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть представление таблицы данных, где я должен ограничить запись числовыми входами (целые и десятичные разряды) для одного из столбцов.Пользователи вводят значения непосредственно в представление сетки данных.Всего есть 2 столбца, один из которых только для чтения.У меня есть следующий код прямо сейчас:

Private Sub dgv1_CellEndEdit(By Val sender As System.Object, ByVal e As System.Windows.Form.DataGridViewCellEventArgs) Handles dgv1.CellEndEdit

    If (e.ColumnIndex =1) Then 'This is the column where I want to restrict input
       If dgv1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value <> Nothing Then
            Dim value As String = dgv1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString()
            If Not Information.IsNumeric(value) Then
                MessageBox.Show("Invalid entry.")
                dgv1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = String.Empty
                Exit Sub
            End If
        End If
     End If

End Sub

Проблема, с которой я сталкиваюсь, заключается в том, что если я введу что-то вроде 3,3 или 4,2 (где, между или после чисел)он не считает это неверной записью и ошибки нет.Однако любой другой специальный символ, + или - или @, в том же формате распознается и показывает сообщение об ошибке.Почему этот код не признает его недействительным и как я могу включить эту проверку?Спасибо.

1 Ответ

0 голосов
/ 12 февраля 2019

В Европе запятые используются для отделения единиц от десятых, как в английских точках (10,3 = десять и три десятых = 10,3 в Европе), поэтому VB распознает их как действительное число.Я бы изменил ваше условие на следующее:

If (Not Information.IsNumeric(value)) OrElse value.Contains(",") Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...