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();
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.
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.
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;
}
}
Ref:
DataGridView cellules en lecture seule
this.dgridvwMain.Rows[index].Cells["colName"].ReadOnly = true;