web-dev-qa-db-fra.com

Comment vérifier si dataGridView checkBox est cochée?

Je suis nouveau dans la programmation et le langage C #. Je suis coincé, aide s'il vous plaît. J'ai donc écrit ce code (c # Visual Studio 2012):

private void button2_Click(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
         if (row.Cells[1].Value == true)
         {
              // what I want to do
         }
    }
}

Et donc j'obtiens l'erreur suivante: 

L'opérateur '==' ne peut pas être appliqué aux opérandes de type 'object' et 'bool'.  

9
Ruslan

Utilisez Convert.ToBoolean() pour vérifier si dataGridView checkBox est coché.

private void button2_Click(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
         if (Convert.ToBoolean(row.Cells[1].Value))
         {
              // what you want to do
         }
    }
}
30
İlker Elçora

Toutes les réponses ici sont sujettes à l'erreur,

Donc, pour clarifier les choses pour les personnes qui tombent sur cette question,

Le meilleur moyen de réaliser ce que veut le PO consiste à utiliser le code suivant:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    DataGridViewCheckBoxCell cell = row.Cells[0] as DataGridViewCheckBoxCell; 

    //We don't want a null exception!
    if (cell.Value != null)
    {
        if (cell.Value == cell.TrueValue)
        {
           //It's checked!
        }  
    }              
}
4
Trebblez

La valeur retourne un type d'objet et ne peut être comparée à une valeur booléenne. Vous pouvez utiliser la valeur bool

if ((bool)row.Cells[1].Value == true)
{
    // what I want to do
}
4
user2509901
if (Convert.ToBoolean(row.Cells[1].EditedFormattedValue))
{
    //Is Checked
}
0
user1098964

Une légère modification devrait fonctionner

if (row.Cells[1].Value == (row.Cells[1].Value=true))
{
    // what I want to do
}
0
Armagan Derman