Changing datagridview cell color dynamically

后端 未结 5 565
伪装坚强ぢ
伪装坚强ぢ 2020-11-29 11:04

I have a dataGridView object that is populated with data. I want to click a button and have it change the color of the background of the cell. This is what I currently have<

5条回答
  •  星月不相逢
    2020-11-29 11:38

    Implement your own extension of DataGridViewTextBoxCell and override Paint method like this:

    class MyDataGridViewTextBoxCell : DataGridViewTextBoxCell
    {
        protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex,
            DataGridViewElementStates cellState, object value, object formattedValue, string errorText,
            DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
        {
            if (value != null)
            {
                if ((bool) value)
                {
                    cellStyle.BackColor = Color.LightGreen;
                }
                else
                {
                    cellStyle.BackColor = Color.OrangeRed;
                }
            }
            base.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value,
                formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
    }
    

    }

    Then in the code set CellTemplate property of your column to instance of your class

    columns.Add(new DataGridViewTextBoxColumn() {CellTemplate = new MyDataGridViewTextBoxCell()});
    

提交回复
热议问题