web-dev-qa-db-fra.com

Comment autoriser la modification uniquement d'une colonne particulière dans datagridview dans l'application Windows?

Je souhaite activer seulement deux colonnes dans DataGridview pour pouvoir les modifier. Les autres ne devraient pas être autorisés à modifier. De plus, je ne suis pas directement lié à la source de données; Je vais faire quelque chose comme ça

DataTable dt = new DataTable();
dt.Columns.Add("Email");
dt.Columns.Add("email1");
for (int i = 0; i < 5; i++)
{
    DataRow dr = dt.NewRow();
    dr["Email"] = i.ToString();
    dr["email1"] = i.ToString() + "sdf";
    dt.Rows.Add(dr);
}
BindingSource bs = new BindingSource();
bs.DataSource = dt;
dataGridView1.DataSource = bs;

Alors, quelle propriété dois-je définir, cela permettra à une seule colonne, par exemple Email (dans l'exemple ci-dessus), d'être modifiable.

29
cmrhema

Définissez la propriété ReadOnly des autres colonnes sur true.

(Vous devrez probablement parcourir la collection Columns et utiliser une instruction if)

41
SLaks
dataGridView1.ReadOnly = false;
dataGridView1.Columns[1].ReadOnly = true;
dataGridView1.Columns[2].ReadOnly = true;

ici la première colonne (index 0) sera modifiable.

23
Dalton
foreach (DataGridViewColumn dc in dataGridViewX1.Columns)
{
       if (dc.Index.Equals(0) || dc.Index.Equals(1))
       {
           dc.ReadOnly = false;
       }
       else
       {
            dc.ReadOnly = true;
       }
 }
21
kirk