Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > DataGridView - прозрачное выделение


Автор: Moid 30.10.2008, 12:36
В моем гриде некоторые строки окрашены разными цветами. И при выделении одной из строки не видно какого она цвета. Делать выделение по одной ячейке - "не вариант".
Как сделать прозрачное выделение, но чтобы видно было какая строка выделена?

Автор: shmarov 30.10.2008, 16:03
Я данную проблему решил путем определения "оттененного" цвета ячейки и указания этого цвета в качестве SelectionBackColor
Код

        private void dGridSearchList_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if ((dGridSearchList.CurrentRow != null) && (e.RowIndex == dGridSearchList.CurrentRow.Index))
            {
                double _coef = 0.85; //Коэффициент оттенения
                Color _color = dGridSearchList.Rows[e.RowIndex].DefaultCellStyle.BackColor;
                if (_color.R == 0 && _color.G == 0 && _color.B == 0)
                    _color = Color.White;
                int _r = (Math.Round(_color.R * _coef) > 255 ? 255 : (int)Math.Round(_color.R * _coef)),
                    _g = (Math.Round(_color.G * _coef) > 255 ? 255 : (int)Math.Round(_color.G * _coef)),
                    _b = (Math.Round(_color.B * _coef) > 255 ? 255 : (int)Math.Round(_color.B * _coef));
                dGridSearchList.Rows[e.RowIndex].DefaultCellStyle.SelectionBackColor = Color.FromArgb(255, _r, _g, _b);
            }
        }

Автор: Moid 30.10.2008, 17:30
shmarov, то что нужно. 
Спасибо +1.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)