2010-12-14 102 views
1

我不斷收到一個錯誤,提示「不能隱式地將類型bool轉換爲int」我無法弄清楚如何處理這個。我得到的錯誤:的DisplayIndex =列[I]。可見,幫助將bool轉換爲整數

代碼:

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

代碼:

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

回答

0

它告訴你什麼是錯的。 Visiblebool,您正在嘗試將其分配給DisplayIndex,這是一個int

11

嘗試

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

然而,更可能的是,你的意思是

DisplayIndex = columns[i].DisplayIndex 
1

唯一可能的解釋,我可以做的是這樣的:

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