Shaheer Rizwan Ответов: 1

Как добавить граничные значения в столбец datagridview


Код, который я использовал ниже, позволяет мне принимать только целочисленные значения в столбце моего DataGridView.

Теперь я хотел бы знать, как я могу ограничить его, чтобы можно было вводить только числа от 1 до 5, или появляется сообщение "введите число от 1 до 5".

Спасибо,

Что я уже пробовал:

Private Sub dataGVGeneral_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles dataGVGeneral.CellValidating



If e.ColumnIndex = 3 Then
            If dataGVGeneral.IsCurrentCellDirty Then
                If Not IsNumeric(e.FormattedValue) Then
                    e.Cancel = True
                    MessageBox.Show("Please enter a Number in Priority")
                End If
            End If
        End If
End Sub

1 Ответов

Рейтинг:
6

Sandeep Mewara

Попробуйте что-нибудь вроде:

Private Sub dataGridView1_CellValidating(ByVal sender As Object, _
    ByVal e _
    As DataGridViewCellValidatingEventArgs) _
    Handles dataGridView1.CellValidating

    Me.dataGridView1.Rows(e.RowIndex).ErrorText = ""
    Dim newInteger As Integer

    ' Don't try to validate the 'new row' until finished editing since there
    ' is not any point in validating its initial value.
    If dataGridView1.Rows(e.RowIndex).IsNewRow Then Return
    If Not Integer.TryParse(e.FormattedValue.ToString(), newInteger) OrElse (newInteger < 1 And newInteger >5) Then
        e.Cancel = True
        Me.dataGridView1.Rows(e.RowIndex).ErrorText = "the value must be an integer between 1 to 5"

    End If
End Sub

Чтобы узнать больше, ознакомьтесь со следующей документацией:
Проверка данных в элементе управления DataGridView - Windows Forms | Microsoft Docs[^]
Практическое руководство.Событие CellValidating (Системы.Окна.Формы) | Microsoft Docs[^]
Пользовательские числовые элементы редактирования для DataGridView[^]


Maciej Los

5ed!

Sandeep Mewara

Спасибо!

Richard Deeming

(newInteger < 1 And newInteger > 5)

Это условие никогда не будет выполнено. Не существует чисел, которые одновременно меньше 1 и больше 5.

Попробуй:
If Not Integer.TryParse(e.FormattedValue.ToString(), newInteger) OrElse newInteger < 1 OrElse newInteger > 5 Then

Sandeep Mewara

:) спасибо за улов. Да, это правда. +5 Вам за этот виртуальный пока что.

Sandeep Mewara

Моим намерением было написать:
(newInteger >0 1 и newInteger < 6)

:до: