所以我创建了一个简单的地址簿项目,它将从sql server获取联系人并在datagridview中显示这些联系人。程序首次加载时,它会自动从数据库中获取联系人并填充网格。我有一个方法在填充后对网格进行样式化 - 它只是设置一些网格属性,除了默认的单元格样式背面颜色之外,它们似乎都有影响,它们最初什么都不做。
但是,当我通过自定义方法清除网格,然后通过调用与程序首次加载时相同的方法重新填充网格时,网格的背面颜色设置正确,这看起来非常奇怪。这是我的代码:
private void ClearGrid()
{
grdContacts.DataSource = null;
bindingSource.DataSource = null;
bindingSource.Clear();
}
我已经在堆栈溢出的其他地方读过,对数据源绑定的数据网格进行样式处理可能很棘手,所以一开始我接受它是不可能的。但是一旦我调用了我的清晰网格方法:
public void StyleGrid()
{
//Colour rows - currently not working
for (int i = 0; i < this.RowCount; i++)
{
this.Rows[i].DefaultCellStyle.BackColor = i % 2 != 0 ? Color.Lavender : Color.AliceBlue;
}
//Set Column Widths
this.Columns["AddressId"].Width = 70;
this.Columns["EmailAddress"].Width = 150;
this.Columns["Hobby"].Width = 148;
this.Columns["Forename"].Width = 115;
this.Columns["Surname"].Width = 115;
this.ReadOnly = true;
this.RowHeadersVisible = false;
this.RowHeadersDefaultCellStyle.BackColor = Color.Lavender;
}
然后再次调用BindGridWithContacts()方法,网格样式使用我想要的颜色。这是我的StyleGrid()方法:
Wagons
注意:每次调用样式网格方法时,网格都会正确设置样式。
有什么建议吗?感谢