AutocompleteMenuNS.MulticolumnAutocompleteItem.OnPaint C# (CSharp) Method

OnPaint() public method

public OnPaint ( PaintItemEventArgs e ) : void
e PaintItemEventArgs
return void
        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;
            }
        }