Длина ячейки Datagridview

Когда я заполняю свой Datagridview, используя следующий код:

Private Sub FormatGridView()
    Dim ILNumColumn As New DataGridViewTextBoxColumn
    Dim ArtNumColumn As New DataGridViewTextBoxColumn
    Dim DescColumn As New DataGridViewTextBoxColumn

    'Header text
    ILNumColumn.HeaderText = "# IL"
    ArtNumColumn.HeaderText = "# Articles"
    DescColumn.HeaderText = "Description"

    'Wrap
    DescColumn.DefaultCellStyle.WrapMode = DataGridViewTriState.True

    'Widths
    ILNumColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
    ArtNumColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
    DescColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill

    'Add columns
    dgvArticles.Columns.Add(ILNumColumn)
    dgvArticles.Columns.Add(ArtNumColumn)
    dgvArticles.Columns.Add(DescColumn)
End Sub

Я хочу, чтобы ILNumColumn принимал не более 3 чисел в своей ячейке.

Я пробовал следующий код:

ILNumColumn.MaxInputLength = 3

Это не работает, я все еще могу написать "9999"... Разве этот код не должен мешать мне печатать, как только я доберусь до "999"? Я знаю, что это можно сделать, используя различные события datagridview, но мне интересно, возможно ли это сделать при добавлении столбца в datagridview.

Спасибо


person Alex    schedule 29.04.2013    source источник


Ответы (1)


Что ж, мне не удалось найти альтернативу MaxInputLength, поэтому я использовал событие CellValidating.

Private Sub dgvArticles_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles dgvArticles.CellValidating
    'Ensures only numeric values are entered in these fields
    If e.ColumnIndex = 0 Then
        If e.FormattedValue <> "" And (e.FormattedValue < 0 Or e.FormattedValue >= 1000) Then
            MsgBox("IL # must be greater than 0 and less than 1000")
            e.Cancel = True
        End If
    End If
End Sub
person Alex    schedule 29.04.2013
comment
Есть ли аналогичный метод e.FormattedValue для работы со строкой? - person nbadaud; 19.02.2016