Как проверить, имеет ли ячейка DataGridView собственный BackColor - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть DataGridView, загруженный данными, и некоторые ячейки выделены специальным BackColor. Мне нужно проверить, выделена ли ячейка (я не знаю заранее выделенного цвета), чтобы выполнить какой-то код. Я использую следующий код:

Color CellColor = MyDataGrid.Rows[r].Cells[c].Style.BackColor;
//if (CellColor != Color.FromArgb(0,0,0,0)) {
//if (CellColor != Color.FromName("0")) {
if (CellColor != MiGrid.DefaultCellStyle.BackColor) {
    // Do something
}

Я предполагаю, что невыделенные ячейки имеют DefaultCellStyle.BackColor, но это не работает. Поскольку DefaultCellStyle.BackColor возвращает Color.FromARGB (0, 0, 0, 0), я также попытался сравнить с этим, но он все еще не работает. Может кто-нибудь показать мне, как проверить, не имеет ли ячейка пользовательский Backcolor?

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Спасибо всем, кто пытался помочь. К счастью, я нашел ответ сам: задний цвет по умолчанию для ячейки DataGridView - Color.Empty. Если вы сверяете свойство Style.BackColor ячейки с Color.Empty, вы можете определить, был ли ячейке присвоен собственный цвет фона.

0 голосов
/ 22 апреля 2020

Во-первых, неясно, какую среду вы используете. Из контекста я бы сказал, что это Winforms и по умолчанию DataGridView.

Далее, что вы подразумеваете под выделенным ? Я понимаю, что вы немного путаете выбор и стиль . Важен вопрос, будете ли вы после выбора или стилизации ячейки.

При условии, что вы после стилизации, по умолчанию цвет ячейки в winforms:

SystemColors.Window

Даже в том случае, если среда Windows будет использовать настроенные цвета, это должно работать. Вы можете запросить этот цвет или установить его для ячеек.

Если вы хотите узнать, какие ячейки выбраны, то может немного усложниться. Во-первых, вы должны убедиться, что mode , в котором находится выбор. Типичными являются CellSelect, RowHeaderSelect или FullRowSelect. Цель и способ выбора должны быть уточнены.

...