2013-12-08 127 views
9

我是新來的編程和C#語言。我卡住了,請幫忙。所以我寫了這個代碼(C#的Visual Studio 2012):如何檢查dataGridView複選框是否被選中?

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

所以我得到以下錯誤:

操作「==」不能應用於類型的「對象」和操作數「布爾」。

回答

4

值返回一個對象類型,並且不能與布爾值進行比較。你可以投的值bool

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

.Cells [1]數字代表什麼? –

27

您應該使用Convert.ToBoolean()檢查的dataGridView複選框被選中。

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

這是比接受的答案更好的方法...'Convert.ToBoolean()'不需要'null'值檢查,因此也簡化了代碼。 –

4

所有在這裏的答案是容易出錯,

因此,要澄清一些事情對誰碰到這個問題絆倒人,

的最佳方式來達到OP想要什麼是下面的代碼:

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

爲我工作.. –

0

輕微的修改應該工作

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

這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/16750699) –

+0

**來自評論隊列:**我可以請求您請您在答案中添加更多的上下文。僅有代碼的答案很難理解。如果您可以在帖子中添加更多信息,它可以幫助提問者和未來的讀者。另請參閱[完全解釋基於代碼的答案](https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)。 –

+0

請查看[如何回答](https://stackoverflow.com/help/how-to-answer)並更新您的答案以提供更多詳細信息。具體來說,如果你解釋瞭如何解決這個問題,這將會很有幫助 – Ortund

相關問題