public override void OnPaint(PaintItemEventArgs e)
{
if (ColumnWidth != null && ColumnWidth.Length != MenuTextByColumns.Length)
throw new Exception("ColumnWidth.Length != MenuTextByColumns.Length");
var columnWidth = ColumnWidth;
if (columnWidth == null)
{
columnWidth = new int[MenuTextByColumns.Length];
var step = e.TextRect.Width/MenuTextByColumns.Length;
for (var i = 0; i < MenuTextByColumns.Length; i++)
columnWidth[i] = (int) step;
}
//draw columns
var pen = Pens.Silver;
var brush = Brushes.Black;
var x = e.TextRect.X;
e.StringFormat.FormatFlags = e.StringFormat.FormatFlags | StringFormatFlags.NoWrap;
for (var i = 0; i < MenuTextByColumns.Length; i++)
{
var width = columnWidth[i];
var rect = new RectangleF(x, e.TextRect.Top, width, e.TextRect.Height);
e.Graphics.DrawLine(pen, new PointF(x, e.TextRect.Top), new PointF(x, e.TextRect.Bottom));
e.Graphics.DrawString(MenuTextByColumns[i], e.Font, brush, rect, e.StringFormat);
x += width;
}
}