private void DrawCheckBox(ColumnHeaderCustomDrawEventArgs e)
        {
            int index = 0;

            CheckColumnTag(e.Column);
            ColumnStateRepository temp = (e.Column.Tag as ColumnStateRepository);
            int offset = temp.Checked == true ? 4 : 0;

            switch (temp.State)
            {
            case ObjectState.Normal:
                index = offset;
                break;

            case ObjectState.Hot:
                index = offset + 1;
                break;

            case ObjectState.Hot | ObjectState.Pressed:
                index = offset + 2;
                break;
            }
            Rectangle rect = CalcCheckBoxRectangle(e.Column);

            CheckImageCollections();
            CheckGlyphCollection();
            e.Cache.DrawImage(checkBoxCollection.Images[index], rect);
            if (!skipGlyph)
            {
                e.Cache.DrawImage(glyphCollection.Images[index], rect);
            }
        }
        private void ResetChecked(GridColumn col)
        {
            CheckColumnTag(column);
            ColumnStateRepository temp = (col.Tag as ColumnStateRepository);

            temp.Checked = !temp.Checked;
            RaiseColumnCheckedChanged(new ColumnCheckedChangedEventArgs(col, temp.Checked));
        }