所以我有一个带有4个DataGrids的表单应用程序,并且我有一个rowleave
事件,在更改单元格时触发,以替换backcolor
,直到更改保存到数据库。我正在尝试编写它,以便所有4个网格可以使用相同的事件,而不是使用不同的网格名称写入相同的事件4次。单元格更改事件在所有网格中都能正常工作,但行离开事件却没有。这是我到目前为止所拥有的:
private void gridNewBusinessPotential_RowLeave(object sender, DataGridViewCellEventArgs e)
{
var gridList = new List<DataGridView>();
DataGridView[] grids = {gridBusinessAgentSuppression,
gridBusinessFollowUpSuppressionData,
gridFollowUpDescription,
gridNewBusinessPotential};
gridList.AddRange(grids);
var focusedGrid = from dg in gridList
where Focused == true
select dg;
focusedGrid.FirstOrDefault().Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Bisque;
}
我在运行时遇到错误,说focusedGrid
没有设置为对象的实例。如果有人知道更好的方法来实现这一目标,请通知我。否则,非常感谢任何和所有帮助。
sender
对象告诉你你正在做什么网格(包括那个关注的网格),那么为什么不用它呢?
private void gridNewBusinessPotential_RowLeave(object sender, DataGridViewCellEventArgs e)
{
(sender as DataGridView)?.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Bisque;
}