在CellFormatting事件中设置CellStyle会在鼠标悬停时引发异常

时间:2019-03-15 01:50:49

标签: c# winforms datagridview

我有一个带有以下事件的表格。但是,当鼠标指针悬停在设置了CellStyle的单元格上时,应用程序将引发异常。

DataGridViewCellStyle AStyle = new DataGridViewCellStyle { BackColor = Color.Green };

private void DGV_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (string.IsNullOrEmpty(e.Value.ToString()))
    {
        e.CellStyle = AStyle;
    }

例外:

base.OnMouseMove(e);
  

$ exception {“值不能为空。\ r \ n参数名称:字体”} System.ArgumentNullException

1 个答案:

答案 0 :(得分:1)

该异常基本上是在告诉您,Font的{​​{1}}属性用于设置DataGridViewCellStyle时不能为null。将初始化CellStyle变量的方式更改为如下形式:

AStyle

或者,您可以完全摆脱DataGridViewCellStyle AStyle; public Form1() { InitializeComponent(); AStyle = new DataGridViewCellStyle { BackColor = Color.Green, Font = DGV.Font }; } (如果仅使用它来设置背景色),而改为使用类似的方法:

AStyle

还有一点要注意的是,如果e.CellStyle.BackColor = Color.Green; 为null,则e.Value.ToString()可能会引发NullReferenceException。您可以考虑添加null-conditioner来避免这种情况:

e.Value