Вы неправильно размещаете строки и столбцы в
dataGridView3[e.RowIndex, 1]
, это должен быть сначала столбец, затем строка:
dataGridView3[1, e.RowIndex]
Кроме того, нужно ли выполнять приведение к DataGridViewTextBoxCell?Это работает для меня:
string selected = dataGridView3[1, e.RowIndex].FormattedValue.ToString();
И мое предположение: зачем использовать его в CellEndEdit, а не в событии CellValidating?Затем можно упростить до:
e.FormattedValue.ToString()
Редактировать Проверка ячейки запускается чаще, чем EndEdit: даже при изменении выбора ячейки.Если для вас это не совсем нормально, лучше оставайтесь с CellEndEdit, как и вы.И, как уже упоминалось, убедитесь, что источник данных содержит строку, а не целое число.Кстати: в моем VS нет функции Take (), я заменил ее на Substring (), попробуйте так:
private void dataGridView3_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 1)
{
string selected = dataGridView3[1, e.RowIndex].FormattedValue.ToString();
if (selected.Length > 50)
{
dataGridView1[3, e.RowIndex].Value = selected.Substring(0, 50);
}
}
}