Можно ли проверить длину значения ячейки в datagridview при вводе? - PullRequest
2 голосов
/ 28 марта 2012

Друзья, я использую элемент управления datagridview в моем приложении windows 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 следующего столбца.И поскольку у меня есть функция для сетки, нажатие клавиши «Ввод» перемещает фокус на следующую ячейку, поэтому отображается ошибка «Операция не удалась, поскольку программа не может зафиксировать или выйти из изменения значения ячейки».в событии CellValidating.Пожалуйста, помогите мне.

1 Ответ

4 голосов
/ 28 марта 2012

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

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

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

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

...