Установка CellStyle в событии CellFormatting вызывает исключение при наведении мыши - PullRequest
1 голос
/ 15 марта 2019

У меня есть форма со следующим событием.Однако, когда указатель мыши находится над ячейками, для которых установлена ​​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 Ответ

1 голос
/ 15 марта 2019

Исключение в основном говорит вам, что свойство Font DataGridViewCellStyle не может быть нулевым, когда оно используется для установки CellStyle.Измените способ инициализации переменной AStyle на что-то вроде этого:

DataGridViewCellStyle AStyle;

public Form1()
{
    InitializeComponent();
    AStyle = new DataGridViewCellStyle { BackColor = Color.Green, Font = DGV.Font };
}

В качестве альтернативы, вы можете полностью избавиться от AStyle (если вы используете его только для установки заднего цвета) и использоватьчто-то вроде этого:

e.CellStyle.BackColor = Color.Green;

Еще одна вещь, на которую следует обратить внимание: e.Value.ToString() может выдать исключение NullReferenceException, если e.Value равно нулю.Вы можете добавить null-conditioner , чтобы избежать этого:

if (string.IsNullOrEmpty(e.Value?.ToString()))
{
    e.CellStyle = AStyle;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...