C #: изменение позиции каретки в DataGridView - PullRequest
1 голос
/ 13 мая 2009

В TextBox я мог бы использовать textBox1.SelectionStart = 4. Как я могу сделать это в DataGridView?

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

Ответы [ 4 ]

2 голосов
/ 13 мая 2009

Вы, вероятно, должны немного уточнить. Вы хотите изменить выбранную строку в DataGridView или в вашем DataGridView есть текстовое поле, для которого вы хотите переместить карету?

Если вы хотите изменить выбранную строку, попробуйте свойство SelectedIndex.

1 голос
/ 10 января 2012
private void RadGridView1_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangeEventArgs e)
{
    RadGridView1.CurrentItem = RadGridView1.SelectedItem;
}
0 голосов
/ 14 мая 2009

Всякий раз, когда пользователь нажимает вашу кнопку, ячейка в DataGridView теряет фокус, поэтому он удаляет поле редактирования, проверяет значение и помещает отформатированное значение в ячейку.

Интересно, каковы ваши причины, почему кнопка перемещает каретку?

0 голосов
/ 13 мая 2009

Вам необходимо получить TextBox через событие EditingControlShowing DataGridView.

Сохраните эту переменную-член, и, когда вам нужно, получите доступ к элементу textBox и установите SelectionStart, как вы написали выше.

Что-то вроде;

dataGrid.EditingControlShowing += this.dataGrid_EditingControlShowing;

и

void dataGrid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if(this.dataGrid.CurrentCell != null && e.Control is TextBox)
            {
                this.currentTextBox = (TextBox)e.Control;
            }
        }
...