25 votes

Désactiver l'édition dans DataGridView

J'utilise Visual Studio 2012. Je veux désactiver l'édition sur le DataGridView il semble que cela fonctionne lorsque j'utilise ce code :

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

Mais lorsque je reviens sur le formulaire du menu, puis sur le formulaire où la DataGridView est, il peut maintenant être édité. Je définis seulement

dataGridView1.ReadOnly = true;

à ce formulaire. Et je ne sais pas quel est le problème. Quelqu'un peut-il m'aider ? Merci.

Voici mon code sur le bouton qui mène au menu

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

et mon bouton qui retourne à la DataGrid :

FrmList frmlist = new FrmList();
frmlist.Show();
this.Hide();

40voto

Romy Mathews Points 457

Pourquoi n'essayez-vous pas de régler le ReadOnly à la propriété Véritable dans la fenêtre Propriétés du DataGridView ?

Edit :

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

Vous étiez en train de régler le ReadOnly dans le CellContentClick qui sera exécuté uniquement lorsque l'utilisateur clique sur les cellules de la grille. Ainsi, lorsque vous créez un nouvel objet du formulaire comme ceci,

FrmList frmlist = new FrmList();

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

3voto

kattav mauk Points 16

Réf :

Cellules de DataGridView en lecture seule

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

0voto

webdude Points 31

Vérifier 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 la manière dont il est implémenté. Dans ce cas, vous pouvez définir l'option ReadOnly à la dernière valeur lors de l'initialisation ou l'implémenter comme singleton.

0voto

Hasan Rameh HR Points 1

Rend l'ensemble du DataGridView en lecture seule. Pour plus d'informations, consultez MSDN

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X