it-roy-ru.com

DataGridView - Фокус определенной ячейки

Как установить фокус на любой указанной ячейке в DataGridView? Я ожидал простого способа, такого как Focus (rowindex, columnindex), но это не так просто.

37
SMUsamaShah

Установите текущую ячейку как:

DataGridView1.CurrentCell = DataGridView1.Rows[rowindex].Cells[columnindex]

или же

DataGridView1.CurrentCell = DataGridView1.Item("ColumnName", 5)

и вы можете напрямую сосредоточиться с редактированием:

dataGridView1.BeginEdit(true)
72
CloudyMarble

вы можете установить Focus для определенного Cell, установив для свойства Selected значение true

dataGridView1.Rows[rowindex].Cells[columnindex].Selected = true;

чтобы избежать множественного выбора, просто установите 

dataGridView1.MultiSelect = false;
11
Binil

проблема с datagridview заключается в том, что он выбирает первую строку автоматически, поэтому вы хотите очистить выбор с помощью

grvPackingList.ClearSelection();
dataGridView1.Rows[rowindex].Cells[columnindex].Selected = true;  

в противном случае это не будет работать

5
Nighil

У меня была похожая проблема. Я спрятал несколько столбцов, а потом попытался выбрать первый ряд. Это не сработало:

datagridview1.Rows[0].Selected = true;

Поэтому я попытался выбрать cell[0,0], но он также не работал, потому что эта ячейка не отображалась. Теперь мое окончательное решение работает очень хорошо:

datagridview1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;    
datagridview1.CurrentCell = datagridview1.FirstDisplayedCell;

Таким образом, это выбирает полный первый ряд.

3
Jules
public void M(){ 
  dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
  dataGridView1.CurrentCell.Selected = true; 
  dataGridView1.BeginEdit(true);
}
1
Ahmed Mohamed
            //For me it's the best way to look for the value of a spezific column
            int seekValue = 5;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                var columnValue = Convert.ToInt32(row.Cells["ColumnName"].Value);
                if (columnValue == seekValue)
                {
                    dataGridView1.CurrentCell = row.Cells[0];
                }
            }
0
Ingo Barrenpohl

в событии form_load (отправитель объекта, EventArgs e) попробуйте это

dataGridView1.CurrentCell = dataGridView1.Rows [dataGridView1.Rows.Count1] .Cells [0];

этот код фокусируется на последней строке и 1-й ячейке

0
Ahmed Soliman Flasha