DataGridViewTextBoxColumn, установите курсор в начале содержимого ячейки - PullRequest
1 голос
/ 15 марта 2012

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

Мои столбцы текстового поля находятся в режиме только для чтения.

Поэтому я написал код вв ячейку введите

private void dgView_CellEnter(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex == 2)
        {
            DataGridView dgv = (DataGridView)sender;
            DataGridViewTextBoxCell textBoxCell = dgv.CurrentCell as DataGridViewTextBoxCell;
            if (textBoxCell != null)
            {
                dgv.BeginEdit(true);
            }
        }
    }

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

Ответы [ 3 ]

2 голосов
/ 15 марта 2012

Попробуйте использовать событие CellClick.Вам не нужно звонить Focus(), просто установите CurrentCell и BeginEdit:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {
        if (e.RowIndex == 2) {
            DataGridView dgv = (DataGridView)sender;
            DataGridViewCell textBoxCell = dgv.Rows[e.RowIndex].Cells[col_index];
            if (textBoxCell != null) {
                dataGridView1.CurrentCell = textBoxCell;
                dgv.BeginEdit(true);
            }
        }
    }
2 голосов
/ 15 марта 2012

Сначала установите фокус на сетку, а затем установите текущую ячейку.

dgv.Focus() = true;
dgv.CurrentCell = dgv[0,2];

Вот пример использования вашего кода сверху:

private void dgView_CellEnter(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex == 2)
    {
        DataGridView dgv = (DataGridView)sender;
        DataGridViewTextBoxCell textBoxCell = dgv.CurrentCell as DataGridViewTextBoxCell;
        if (textBoxCell != null)
        {
            dgv.BeginEdit(true);
            dgv.Focus() = true;
            int col = e.ColumnIndex;
            dgv.CurrentCell = dgv[2,col]; 
        }
    }
}
0 голосов
/ 22 мая 2017

private void dataGridView1_CellMouseEnter (отправитель объекта, DataGridViewCellEventArgs e) {

var dataGridView = (sender as DataGridView);

if (e.ColumnIndex == "Your desire column index here")
{
            dataGridView.Cursor = Cursors.Hand;
}
else
{
            dataGridView.Cursor = Cursors.Default;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...