Можно ли проверить длину значения ячейки в datagridview при вводе?

Друзья, я использую элемент управления datagridview в своем приложении Windows Visual Studio 2005. Здесь у меня 5 столбцов. Среди этих 5, 2-й (colIndex 1) и 3-й (colIndex 2) столбцы имеют текстовый тип данных, а 4-й (colIndex 3) и 5-й (colIndex 4) имеют столбец с двойным типом данных. Теперь я должен проверить длину значения ячейки для colIndex 1 и 2, больше ли введенная длина значения, чем конкретное (10 для colIndex 1 и 100 для colIndex 2) значение? Если да, то я должен показать соответствующее сообщение. Можете ли вы предложить, в каком событии datagridview мне следует проверить введенное / набранное значение ячейки и как проверить это значение? Я использовал следующий код в событии CellValidating

    string columnName = dgView.Columns[e.ColumnIndex].Name;

        if (dgView.Rows[e.RowIndex].Cells[dgViewColumn.TAN].Value.ToString().Length > 10)
        {
            e.Cancel = true;
            MessageBox.Show(columnName + " must be 10 Digits Long!");
        }

Но он показывает columnName следующего столбца. И поскольку у меня есть функция для сетки, которая при нажатии клавиши «Enter» перемещает фокус на следующую ячейку, она показывает ошибку как «Операция не удалась, потому что программа не может зафиксировать или выйти из изменения значения ячейки». в событии CellValidating. Пожалуйста помогите.


person Sukanya    schedule 28.03.2012    source источник


Ответы (1)


Я надеюсь, вы знаете, что событие CellValidating будет запускаться для каждой ячейки, поэтому, возможно, вы видите это сообщение, поскольку оно может завершиться ошибкой для части длины столбцов типа данных double.

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

вы также можете использовать e.FormattedValue, чтобы получить текущее значение в ячейке.

Также вы можете установить MaxInputLength для столбца Textbox в свойствах (на случай, если он вам нужен)

person V4Vendetta    schedule 28.03.2012
comment
сетка не является связанным типом. Это сетка типа записи. Тогда как мне установить MaxLength? - person Sukanya; 28.03.2012
comment
хорошо, если вы посмотрите в свойствах столбца текстового поля (в дизайнере), вы увидите MaxInputLength, который вы можете установить на 10 или 100 по мере необходимости - person V4Vendetta; 28.03.2012
comment
Босс, тип данных, которые необходимо ввести, - текстовый, и эти проверки выполняются с помощью кода, поэтому получить столбец текстового поля невозможно. - person Sukanya; 28.03.2012
comment
вы сказали, что используете DataGridView, и, поскольку вы вводите какой-то текст, я предположил, что это должна быть сборка в DataGridViewTextBoxColumn, если вы не использовали что-то еще - person V4Vendetta; 28.03.2012