J'ai un DataGridView dans une application WinForms et je veux que toutes les colonnes soient verrouillées à l'édition. Ce que j'ai pu réaliser avec le code suivant:Colonnes et lignes en lecture seule dans un DataGridView
foreach (DataGridViewColumn col in myGrid.Columns)
{
if (col.Name == "LockedColumn")
{
col.ReadOnly = false;
}
else
{
col.ReadOnly = true;
}
}
Cependant, je dois aussi un verrou conditionnel à cette colonne, en fonction des valeurs ailleurs dans chaque ligne. J'ai essayé le code suivant:
foreach (DataGridViewRow row in myGrid.Rows)
{
if ((bool)row.Cells["ConditionalColumn"].Value == false)
{
row.ReadOnly = false;
}
else
{
row.ReadOnly = true;
}
}
Cependant, cette verrouille toute la grille qui est pas ce que je veux. Ce que je veux peut être plus clair avec un exemple de table.
ColA ColB colC
row1 vrai valeur1
row2 faux valeur2
row3 vrai value3
Je veux les colonnes A & B verrouillé (lecture seule) dans leur intégralité, et la valeur par défaut pour que le Col C autorise l'édition, sauf si la valeur de la Colonne B est fausse. Par conséquent, dans l'exemple ci-dessus, seules value1 et value3 seraient éditables.
Cependant, je n'arrive pas à y parvenir, car comme indiqué ci-dessus, si je parcours les lignes avec une condition qui définit readonly sur false, tout est verrouillé.
Est-ce le code de votre projet? Vous ne pouvez pas convertir une cellule dataagridview en booléen, ce code ne doit donc pas être compilé. En outre, il n'est pas très clair quel est votre problème. Voulez-vous dire que lorsque vous définissez une ligne en lecture seule, toute la grille devient en lecture seule? Cela n'arrive pas. –
Pourquoi toutes les démarques - qu'est-ce qui ne va pas avec ma question? – PJW
Je n'ai pas downvote - les gens surpris ont, mais peut-être le code non compilateur était la raison. J'espère que si vous publiez le code réel de votre projet, les gens supprimeront les downvotes. –