2016-04-22 21 views
-6

wo ist das Problem mit meinem Code ?? ich kann es nicht auf Microsoft Visual Studio 2015 kompilieren kann jeder helfen? Was sollte ich ändern und wo ist das Problem? ErsetzenCS0030: Kann den Typ 'int' nicht in 'bool' umwandeln

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

Tag die Sprache, nicht nutzlos Typnamen/Verben. Erkläre, was du zu tun versuchst. Geben Sie ein minimales Beispiel an, das andere testen können. "Ich kann es nicht kompilieren" => Zitiere die Fehler, die dich stoppen. Wäre das so schwierig? –

+0

Bitte geben Sie beim nächsten Mal mehr Informationen, damit die Leute das Problem leicht verstehen können. Zum Beispiel könnten Sie sagen, dass Sie ein Formular mit einem bestimmten Steuerelement haben, und Sie versuchen, mit dem Klick-Ereignis etwas zu tun (erklären Sie, was Sie tun wollen). Dann erkläre, was du versucht hast, bevor du fragst und welche Ergebnisse du hast. –

Antwort

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

verwenden Was wollen Sie tun?

Flag2 ist ein boolescher Wert. Mit dem Operator?: Können Sie eine boolesche Bedingung testen, um einen von zwei möglichen Werten zu wählen, in Ihrem Fall 0 und 1. In Ihrem Code versuchen Sie, 0/1 auf boolean zu setzen. Was ist der Grund für die Verwendung des Operators?:? Geben Sie Folgendes ein:

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

:

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

Von:

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

das hat funktioniert! vielen Dank! – Panaiz

2

Das Problem ist hier: (bool) (flag2 ? 1 : 0). Sie versuchen, eine Ganzzahl mithilfe einer expliziten Umwandlung in einen Booleschen Wert zu konvertieren.

Verwenden Sie stattdessen Convert.ToBoolean: Convert.ToBoolean(flag2 ? 1 : 0). Übrigens, es scheint so, als wäre es so nutzlos: Warum wollen Sie 1 in true und 0 in false konvertieren, wenn flag2 bereits bool ist?

BTW, jetzt sollten Sie haben bereits erkannt, dass bool keine implizite oder explizite Umwandlung in int und umgekehrt hat, und Sie müssen Convert.ToBoolean/Convert.ToInt32 ...

Verwandte Themen