2013-12-08 17 views
9

Programlamada ve C# dilinde yeniyim. Takıldım, lütfen yardım edin.dataGridView checkBox'un işaretli olup olmadığını nasıl kontrol edebilirim?

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 
     } 
    } 
} 

Ve bu yüzden almak aşağıdaki hata:

operator '==' türü 'nesne' ve işlenenler için uygulanamaz 'Yani bu kodu (C#, Visual Studio 2012) yazdım 'bool.

cevap

4

Değer, bir nesne türünü döndürür ve bir boole değeriyle karşılaştırılamaz. Sen değeri

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

.Cells [1] numarası neyi temsil ediyor? –

27

Sen datagridview onay kutusunun işaretli olup olmadığını kontrol etmek Convert.ToBoolean() kullanmalıdır bool yayınlayabilirsiniz.

iyi yolu OP istediğini elde etmek için burada yanıtların hepsi hata eğilimli

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 
     } 
    } 
} 
+0

Bu, kabul edilen yanıttan çok daha iyi bir yöntem ... 'Convert.ToBoolean()' 'null' kontrolünü gerektirmez ve bu nedenle de kodu akıcı hale getirir. –

4

Yani

bu soruya rastlarsanız insanlar için bir şeyler temizlemek için, birlikte olduğu aşağıdaki kod:

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! 
     } 
    }    
} 
+1

Benim için çalıştı .. –

0

hafif modifikasyon

çalışmalıdır
0
if (Convert.ToBoolean(row.Cells[1].EditedFormattedValue)) 
{ 
    //Is Checked 
} 
+1

Bu soruya bir cevap vermiyor. Yeterli [itibara] sahip olduğunuz zaman (https://stackoverflow.com/help/whats-reputation) herhangi bir gönderiye yorum yapabilirsiniz (https://stackoverflow.com/help/privileges/comment); bunun yerine, [askerden açıklama istemeyen cevaplar verin] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-yerine). - [Yorum Yaz] (/ review/düşük kaliteli yazılar/16750699) –

+0

** Yorumdan: queue: ** Cevabınız etrafında biraz daha içerik eklemenizi rica edebilir miyim. Sadece kod cevapları anlamak zor. Gönderinize daha fazla bilgi ekleyebilmeniz durumunda, okuyucunun ve gelecekteki okuyucuların yardımcı olacaktır. Ayrıca bkz. [Tamamen kod tabanlı cevapları açıklamak] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers). –

+0

Lütfen daha fazla ayrıntı sağlamak için [nasıl cevap verilir] bölümüne bakın (https://stackoverflow.com/help/how-to-answer) ve cevabınızı güncelleyin. Özellikle, sorunun nasıl çözüldüğünü açıklamanız yararlı olur – Ortund

İlgili konular