Как нарисовать границу вокруг ToolStripButton - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть ToolStripButton внутри ToolStrip, вокруг которой я хочу нарисовать границу. Это код, который я использую:

    private void tsbtnSearch_Paint(object sender, PaintEventArgs e)
    {
        ToolStripButton btn = (ToolStripButton)sender;

        ControlPaint.DrawBorder(e.Graphics, btn.Bounds,
               Color.Red, 3, ButtonBorderStyle.Outset,
               Color.Red, 3, ButtonBorderStyle.Outset,
               Color.Red, 3, ButtonBorderStyle.Outset,
               Color.Red, 3, ButtonBorderStyle.Outset);

    }

Граница рисуется, как показано на рисунке ниже:

ToolStripButton

Что мне нужно сделать, чтобы получить правильные координаты?

1 Ответ

2 голосов
/ 09 апреля 2020

Вы почти у цели. Вы можете использовать более простой вариант DrawBorder и определить прямоугольник границы вручную с помощью кнопки widht и height:

       ToolStripButton btn = (ToolStripButton)sender;
                ControlPaint.DrawBorder(
                       e.Graphics, 
                       new Rectangle(0, 0, btn.Width, btn.Height),
// or as @LarsTech commented, this works fine too!
//  btn.ContentRectangle,
                       Color.Red,
                       ButtonBorderStyle.Solid);            

В этом случае прямоугольник границы не является границами кнопки ( ИМО, потому что ToolStripButton это не плоская кнопка, а сложный объект ToolStripItem, который имеет больше, чем просто кнопка).

enter image description here

...