以下是一个示例代码,演示如何在 WinForm 中使用 INotifyPropertyChanged 接口和自定义样式来实现每行颜色:
```csharp
public class MyData : INotifyPropertyChanged
{
private string _name;
private int _age;
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged("Name");
}
}
}
public int Age
{
get { return _age; }
set
{
if (_age != value)
{
_age = value;
OnPropertyChanged("Age");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
```
在 Form_Load 事件中,我们可以创建 MyData 对象的列表作为数据源,并将其绑定到 DataGridView 控件上。接着,我们可以通过设置 DefaultCellStyle 和 AlternatingRowsDefaultCellStyle 属性来分别设置奇数行和偶数行的背景色。
```csharp
private void Form1_Load(object sender, EventArgs e)
{
// 创建数据源
List myDataList = new List();
myDataList.Add(new MyData { Name = "Alice", Age = 25 });
myDataList.Add(new MyData { Name = "Bob", Age = 30 });
myDataList.Add(new MyData { Name = "Charlie", Age = 35 });
// 绑定数据源
dataGridView1.DataSource = myDataList;
// 设置行样式
dataGridView1.RowsDefaultCellStyle.BackColor = Color.White;
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray;
}
```
如果需要根据数据绑定的值来设置行的背景色,可以在 MyData 类中添加一个属性来表示行的颜色,然后在 DataGridView 的 CellFormatting 事件中根据该属性来设置单元格的背景色。例如,下面的代码将 Age 大于 30 的行的背景色设置为红色:
```csharp
public class MyData : INotifyPropertyChanged