2010-12-14 5 views
1

Je continue à recevoir une erreur disant "Impossible de recopier implicitement le type bool en int" Je n'arrive pas à comprendre quoi faire avec ça. Je reçois l'erreur sur: DisplayIndex = colonnes [i] .Visible,Aide à la conversion de bool en entier

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

Répondre

0

Cela vous dit ce qui ne va pas. Visible est un bool et vous essayez de l'assigner à DisplayIndex qui est un int.

11

Essayez

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

Cependant, plus probable, vous voulez dire

DisplayIndex = columns[i].DisplayIndex 
1

La seule interprétation possible que je peux faire de c'est:

 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++; 
     } 
Questions connexes