private void DrawColumnHeaders(Graphics gr)
		{
			PerformanceAnalyzer.Start("DrawColumnHeaders");
			ReorderColumnState reorder = Input as ReorderColumnState;
			int x = 0;
			TreeColumn.DrawBackground(gr, new Rectangle(0, 0, ClientRectangle.Width + 2, ColumnHeaderHeight - 1), false, false);
			gr.TranslateTransform(-OffsetX, 0);
			foreach (TreeColumn c in Columns)
			{
				if (c.IsVisible)
				{
					if (x >= OffsetX && x - OffsetX < this.Bounds.Width)// skip invisible columns
					{
						Rectangle rect = new Rectangle(x, 0, c.Width, ColumnHeaderHeight - 1);
						gr.SetClip(rect);
						bool pressed = ((Input is ClickColumnState || reorder != null) && ((Input as ColumnState).Column == c));
						c.Draw(gr, rect, Font, pressed, _hotColumn == c);
						gr.ResetClip();

						if (reorder != null && reorder.DropColumn == c)
							TreeColumn.DrawDropMark(gr, rect);
					}
					x += c.Width;
				}
			}

			if (reorder != null)
			{
				if (reorder.DropColumn == null)
					TreeColumn.DrawDropMark(gr, new Rectangle(x, 0, 0, ColumnHeaderHeight));
				gr.DrawImage(reorder.GhostImage, new Point(reorder.Location.X +  + reorder.DragOffset, reorder.Location.Y));
			}
			PerformanceAnalyzer.Finish("DrawColumnHeaders");
		}
        private void DrawColumnHeaders(Graphics gr)
        {
            ReorderColumnState reorder = this.Input as ReorderColumnState;

            int x = 0;

            TreeColumn.DrawBackground(gr, new Rectangle(0, 0, ClientRectangle.Width + 2, this.ColumnHeaderHeight - 1), false, false);

            gr.TranslateTransform(-OffsetX, 0);

            foreach (TreeColumn c in this.Columns)
            {
                if (!c.IsVisible)
                {
                    continue;
                }

                if (x + c.Width >= this.OffsetX && x - this.OffsetX < this.Bounds.Width)            // skip invisible columns (fixed by wj32)
                {
                    Rectangle rect = new Rectangle(x, 0, c.Width, this.ColumnHeaderHeight - 1);

                    gr.SetClip(rect);

                    bool pressed = ((this.Input is ClickColumnState || reorder != null) && ((this.Input as ColumnState).Column == c));

                    c.Draw(gr, rect, this.Font, pressed, this._hotColumn == c);

                    gr.ResetClip();

                    if (reorder != null && reorder.DropColumn == c)
                    {
                        TreeColumn.DrawDropMark(gr, rect);
                    }
                }
                x += c.Width;
            }

            if (reorder != null)
            {
                if (reorder.DropColumn == null)
                {
                    TreeColumn.DrawDropMark(gr, new Rectangle(x, 0, 0, this.ColumnHeaderHeight));
                }

                gr.DrawImage(reorder.GhostImage, new Point(reorder.Location.X +  +reorder.DragOffset, reorder.Location.Y));
            }
        }
        private void DrawColumnHeaders(Graphics gr)
        {
            ReorderColumnState reorder = Input as ReorderColumnState;

            int x = 0;

            TreeColumn.DrawBackground(gr, new Rectangle(0, 0, ClientRectangle.Width + 10, ColumnHeaderHeight), false, false);
            gr.TranslateTransform(-OffsetX, 0);

            foreach (TreeColumn c in Columns)
            {
                if (c.IsVisible)
                {
                    Rectangle rect    = new Rectangle(x, 0, c.Width, ColumnHeaderHeight);
                    bool      pressed = HeaderStyle == ColumnHeaderStyle.Clickable && ((Input is ClickColumnState || reorder != null) && ((Input as ColumnState).Column == c));
                    bool      hot     = HeaderStyle == ColumnHeaderStyle.Clickable && _hotColumn == c;
                    c.Draw(gr, rect, Font, pressed, hot);

                    if (reorder != null && reorder.DropColumn == c)
                    {
                        TreeColumn.DrawDropMark(gr, rect);
                    }

                    x += c.Width;
                }
            }

            if (reorder != null)
            {
                if (reorder.DropColumn == null)
                {
                    TreeColumn.DrawDropMark(gr, new Rectangle(x, 0, 0, ColumnHeaderHeight));
                }
                gr.DrawImage(reorder.GhostImage, reorder.Location);
            }
        }