Возможное решение с использованием события EditingControlShowing .e.Control
член DataGridViewEditingControlShowingEventArgs ссылается на элемент управления для редактирования текущей ячейки.
После проверки, имеет ли тип элемента управления для редактирования тип DataGridViewTextBoxEditingControl e.Control
приводится к классу TextBoxBase , который предоставляет метод Select () , используемый для выбора текста ячейки.
Я ввел небольшую задержку перед выделением части текста, потому что событие вызывается до того, как ячейка становится недействительной.Если выбор выполняется сразу же, элемент управления редактированием повторно выделит весь текст после того, как ячейка станет недействительной и предыдущий выбор будет потерян.
Обновление :
Как отмечается в комментариях Реза Агаи , Вызов действия в этом контексте также приведет к тому же результату (даже лучше).
Этот метод выбирает последнее слово текста или весь текст, если есть только одно слово.Может быть легко адаптирован для выбора любого другого раздела текста.
Пример функциональности:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (!(e.Control is DataGridViewTextBoxEditingControl)) return;
TextBoxBase editControl = (TextBoxBase)e.Control;
var cellText = editControl.Text;
if (cellText?.Length > 1)
{
BeginInvoke(new Action(() => {
string word = cellText.Split().Last();
editControl.Select(cellText.Length - word.Length, word.Length);
}));
}
}