System.Windows.Forms.MenuItem.OnDrawItem C# (CSharp) Method

OnDrawItem() protected method

protected OnDrawItem ( DrawItemEventArgs e ) : void
e DrawItemEventArgs
return void
		protected virtual void OnDrawItem (DrawItemEventArgs e)
		{
			DrawItemEventHandler eh = (DrawItemEventHandler)(Events [DrawItemEvent]);
			if (eh != null)
				eh (this, e);
		}

Usage Example

Example #1
0
        protected internal void DrawMenuItem(Graphics g, int item, bool highlighted)
        {
            Rectangle bounds = itemBounds[item];

            // Get the area for the text
            Rectangle textBounds = new Rectangle(
                bounds.X + ItemPaddingOrigin.X,
                bounds.Y + ItemPaddingOrigin.Y,
                bounds.Width - ItemPaddingSize.Width,
                bounds.Height - ItemPaddingSize.Height);
            MenuItem menuItem = itemList[item];

            if (menuItem.Text == "-")
            {
                g.FillRectangle(SystemBrushes.Menu, bounds);
                ThemeManager.MainPainter.DrawSeparator(g, bounds);
            }
            else
            {
                if (menuItem.OwnerDraw)
                {
                    DrawItemEventArgs drawItem = new DrawItemEventArgs(g, SystemInformation.MenuFont, bounds, item, DrawItemState.None);
                    menuItem.OnDrawItem(drawItem);
                }
                else
                {
                    Brush fore, back;
                    if (highlighted)
                    {
                        fore = SystemBrushes.HighlightText;
                        back = SystemBrushes.Highlight;
                    }
                    else
                    {
                        fore = SystemBrushes.MenuText;
                        back = SystemBrushes.Menu;
                    }
                    g.FillRectangle(back, bounds);
                    g.DrawString(menuItem.Text, SystemInformation.MenuFont, fore, textBounds, format);
                    if (this is ContextMenu && menuItem.itemList.Length > 0)
                    {
                        int x = bounds.Right - 7;
                        int y = (bounds.Bottom + bounds.Top) / 2;
                        g.FillPolygon(fore, new PointF[] {
                            new Point(x, y), new Point(x - 5, y - 5), new Point(x - 5, y + 5)
                        });
                    }
                }
            }
        }