Рисование прямоугольника вокруг toolStripMenuItem

Я знаю, что могу рисовать прямоугольники практически везде, где хочу

using (Graphics G = myControl.CreateGraphics())
{
    G.DrawRectangle(new Pen(myColor),myControl.Bounds);
}

но мне трудно понять, как это сделать с помощью toolStripMenuItem, чтобы я мог нарисовать прямоугольник вокруг него.

Любая помощь приветствуется. Спасибо!

3 ответа

Решение

Вы можете попробовать использовать событие Paint (вам никогда не следует использовать CreateGraphics) и свойство ContentRectangle:

void toolStripButton1_Paint(object sender, PaintEventArgs e) {
  e.Graphics.DrawRectangle(Pens.Red, toolStripButton1.ContentRectangle);
}

Самый простой способ - унаследовать от управления и переопределить OnPaint метод, затем измените все экземпляры ToolStripMenuItem в MyToolStripMenuItem,

class MyToolStripMenuItem : ToolStripMenuItem
{
    protected override void OnPaint( PaintEventargs pe )
    {
        base.OnPaint( pe );

        pe.ClipRectangle.Inflate( -1, -1 );
        pe.Graphics.DrawRectangle( Pens.Black, pe.ClipRectangle );
    }
}

Немного сложнее, но лучше в долгосрочной перспективе для удобства сопровождения, реализует пользовательский ToolStripRenderer, который позволит вам изменить внешний вид всего объекта, например, сделав его похожим на VS2010.

(Изображение взято с VBForums)

Пока ToolStripMenuItemне является элементом управления, его родитель. Поэтому вы можете позвонить

      myToolStripMenuItem.GetCurrentParent().CreateGraphics()
Другие вопросы по тегам