2010-12-14 16 views
1

Ich bekomme immer eine Fehlermeldung "Kann nicht implizit Typ Bool zu Int konvertieren" Ich kann nicht herausfinden, was damit zu tun ist. Ich erhalte den Fehler auf: Displayindex = Spalten [i] .Visible,Hilfe beim Konvertieren von Bool zu Integer

Code:

private void SaveColumnOrder() 
    { 
     if (dgPortStatus.CanUserReorderColumns == true) 
     { 
      List<ColumnOrderItem> columnOrder = new List<ColumnOrderItem>(); 
      DataGridViewColumnCollection columns = this.Columns; 
      for (int i = 0; i < columns.Count; i++) 
      { 
       columnOrder.Add(new ColumnOrderItem 
       { 
        ColumnIndex = i, 
        DisplayIndex = columns[i].Visible, 
        Width = columns[i].Width 
       }); 

      } 

      portalDataGridViewSetting.Default.ColumnOrder[this.Name] = columnOrder; 
      portalDataGridViewSetting.Default.Save(); 
     } 
    } 

Code:

public sealed class ColumnOrderItem 
    { 
     public int DisplayIndex { get; set; } 
     public int Width { get; set; } 
     public bool Visible { get; set; } 
     public int ColumnIndex { get; set; } 
    } 

Antwort

0

Es sagt Ihnen, was los ist. Visible ist ein bool und Sie versuchen, es DisplayIndex zuzuteilen, das ist ein int.

11

Versuchen

DisplayIndex = columns[i].Visible ? 1 : 0 

jedoch wahrscheinlicher, Du meinst

DisplayIndex = columns[i].DisplayIndex 
1

Die einzig mögliche Interpretation, die ich daraus machen kann, ist:

 int displayIndex = 0; 
     for (int i = 0; i < columns.Count; i++) 
     { 
      columnOrder.Add(new ColumnOrderItem 
      { 
       ColumnIndex = i, 
       DisplayIndex = displayIndex; 
       Width = columns[i].Width 
      }); 

      if (columns[i].Visible) displayIndex++; 
     } 
Verwandte Themen