2016-04-22 81 views
-6

哪里有我的代码问题? 我无法编译它在Microsoft Visual Studio 2015 任何人都可以提供帮助吗?我应该改变什么以及问题在哪里?CS0030:无法将类型'int'转换为'bool'

private void SelectAll_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    GridColumn column = (GridColumn) e.Item.Tag; 
    int dataRowCount = this.gridViewCastles.DataRowCount; 
    bool flag1 = true; 
    bool flag2 = true; 
    this.gridViewCastles.BeginUpdate(); 
    try 
    { 
    for (int rowHandle = dataRowCount - 1; rowHandle >= 0; --rowHandle) 
    { 
     if (flag1) 
     { 
     flag2 = !(bool) this.gridViewCastles.GetRowCellValue(rowHandle, column); 
     flag1 = false; 
     } 
     this.gridViewCastles.SetRowCellValue(rowHandle, column, (object) (bool) (flag2 ? 1 : 0)); 
    } 
    } 
    finally 
    { 
    this.gridViewCastles.EndUpdate(); 
    } 
} 
+1

标记语言,而不是无用的typenames/verb。解释你想要做什么。提供其他人可以测试的最小示例。 “我无法编译它”=>引用阻止你的错误。这会如此困难吗? –

+0

请下次提供更多信息,以便人们可以轻松理解问题。例如,你可以说你有一个具有某种类型控制的表单,并且你正在尝试处理点击事件来做某件事情(解释你想做什么)。然后解释你在问之前做了什么,以及你得到了什么结果。 –

回答

0
this.gridViewCastles.SetRowCellValue(rowHandle, column, (object) (bool) (flag2 ? 1 : 0)); 

你到底想干什么?

Flag2是一个布尔值。 ?:操作符允许你测试一个布尔条件来选择两种可能的值中的一种,在你的情况下是0和1.在你的代码中,你试图将0/1转换为布尔值。什么是使用?:操作符的原因?只需键入:

this.gridViewCastles.SetRowCellValue(rowHandle, column, (object) flag2); 
1

替换:

this.gridViewCastles.SetRowCellValue(rowHandle, column, (object)(flag2); 

通过:

this.gridViewCastles.SetRowCellValue(rowHandle, column, (object)(bool)(flag2 ? 1 : 0)); 
+0

工作!非常感谢你! – Panaiz

2

的问题是在这里:(bool) (flag2 ? 1 : 0)。你正在尝试使用显式转换将整数转换为布尔值。

改为使用Convert.ToBooleanConvert.ToBoolean(flag2 ? 1 : 0)。顺便说一句,它似乎是如此无用:为什么你要转换1true0false如果flag2已经是bool

BTW,现在你应该已经意识到,bool没有隐性或显性转换为int,反之亦然,你需要使用Convert.ToBoolean/Convert.ToInt32 ...

相关问题