2016-04-22 16 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

不要なタイプ名/動詞ではなく、その言語にタグを付けてください。あなたがしようとしていることを説明してください。他人がテストできる最小限の例を提供する。 "私はそれをコンパイルできません" =>あなたを止めているエラーを引用してください。それはとても難しいだろうか? –

+0

次回は、より多くの情報を提供して、人々が問題を容易に理解できるようにしてください。たとえば、あるタイプのコントロールを持つフォームがあり、何かを行うためにclickイベントを処理しようとしているとします(何をしたいかを説明します)。次に、尋ねる前に試したことと、得られた結果を説明します。 –

答えて

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

が何をしようとする使用する必要があるでしょうか?

フラグ2はブール値です。 ?:演算子を使用すると、ブール条件をテストして、0と1の2つの可能性のあるvauleの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.ToBooleanを使用してください:Convert.ToBoolean(flag2 ? 1 : 0)。ところで、それは非常に役に立たないようです:をtrueに、0falseに変換したいのですが、なぜならflag2は既にboolですか?

ところで、今、あなたはすでに持っているboolが暗黙的または明示的なintへの変換およびその逆を持っていないことに気づき、あなたがConvert.ToBoolean/Convert.ToInt32 ...

関連する問題