我一直收到一条错误,上面写着“不能隐式地将bool类型转换为int”我无法弄清楚该怎么做。我得到错误:DisplayIndex = columns [i] .Visible,
代码:
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 :(得分:11)
尝试
DisplayIndex = columns[i].Visible ? 1 : 0
但是,更有可能的意思是
DisplayIndex = columns[i].DisplayIndex
答案 1 :(得分: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++;
}
答案 2 :(得分:0)
它告诉你什么是错的。 Visible
是bool
,您尝试将其分配给DisplayIndex
int
。