web-dev-qa-db-fra.com

DataGridView - Focus sur une cellule spécifique

Comment définir le focus sur une cellule spécifiée dans DataGridView? Je m'attendais à un moyen simple comme Focus (rowindex, columnindex) mais ce n'est pas si facile.

37
SMUsamaShah

Définissez la cellule actuelle comme suit:

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

ou

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

et vous pouvez vous concentrer directement avec Édition en:

dataGridView1.BeginEdit(true)
72
CloudyMarble

vous pouvez définir Focus sur une Cell spécifique en définissant la propriété Selected sur true

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

pour éviter la sélection multiple 

dataGridView1.MultiSelect = false;
11
Binil

le problème avec datagridview est qu’il sélectionne automatiquement la première ligne pour que vous vouliez effacer la sélection en.

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

sinon, ça ne marchera pas

5
Nighil

J'avais un problème similaire. J'ai caché des colonnes et j'ai ensuite essayé de sélectionner la première ligne. Cela n'a pas vraiment fonctionné:

datagridview1.Rows[0].Selected = true;

J'ai donc essayé de sélectionner cell[0,0], mais cela n'a pas fonctionné car cette cellule n'était pas affichée. Maintenant, ma solution finale fonctionne très bien:

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

Donc, cela sélectionne la première ligne complète.

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

dans event form_load (expéditeur d'objet, EventArgs e) essayez ceci

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

ce code fait se concentrer sur la dernière ligne et la 1ère cellule

0