web-dev-qa-db-fra.com

Désactiver l'édition dans DataGridView

J'utilise Visual Studio 2012. Je veux désactiver l'édition sur la DataGridView, cela semble fonctionner lorsque j'ai utilisé ce code:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    dataGridView1.ReadOnly = true;
}

Mais lorsque je reviens sur le formulaire de menu, puis que je reviens au formulaire où se trouve DataGridView, il peut maintenant être modifié. Je ne définis que 

dataGridView1.ReadOnly = true;

à cette forme. Et je ne sais pas quel est le problème. Quelqu'un peut aider? Merci.

Voici mon code sur le bouton allant au menu

Menu menu = new Menu();
this.Hide();
menu.ShowDialog();

et mon bouton revenant au DataGrid:

FrmList frmlist = new FrmList();
frmlist.Show();
this.Hide();
6
Jonald Samilo

Pourquoi n'essayez-vous pas de définir la propriété ReadOnly sur True dans la fenêtre Propriétés de DataGridView? 

Modifier:

Double-cliquez sur le formulaire et dans la fenêtre de conception, sélectionnez DataGridView et ouvrez l'onglet Propriétés. Faites défiler les propriétés et vous verrez l’option ReadOnly. Changez sa valeur en True .

Vous définissiez la propriété ReadOnly dans l'événement CellContentClick qui sera exécuté uniquement lorsque l'utilisateur clique sur les cellules de la grille. Donc, quand vous créez un nouvel objet de la forme comme ceci,

FrmList frmlist = new FrmList();

cela créera simplement une nouvelle instance du formulaire avec la variable Properties définie dans le concepteur. Puisque la propriété ReadOnly est définie sur false par défaut et que le code que vous avez écrit pour la définir sur true n'a pas été exécuté, DataGridView sera éditable. 

11
Romy Mathews

Vérifiez si le formulaire est réinitialisé lors de la navigation. Vous pouvez définir un point d'arrêt dans le constructeur. Cela dépend de votre service de navigation ou de son implémentation. Dans ce cas, vous pouvez définir l'indicateur ReadOnly sur la dernière valeur d'initialisation ou l'implémenter en tant que singleton.

0
webdude

Rendre l'intégralité de DataGridView en lecture seule . Pour plus d'informations, visitez MSDN

private void Button8_Click(object sender, System.EventArgs e)
{
    foreach (DataGridViewBand band in dataGridView.Columns)
    {
        band.ReadOnly = true;
    }
}
0
Hasan Rameh HR

Ref:

DataGridView cellules en lecture seule

this.dgridvwMain.Rows[index].Cells["colName"].ReadOnly = true;
0
kattav mauk