Попытка изменить цвет границы метки - PullRequest
24 голосов
/ 12 июня 2009

Я работаю в VB, VS2008, winforms. У меня есть несколько ярлыков для создания, и я использую BorderStyle = FixedSingle.

Есть ли способ изменить цвет этой рамки? Всегда по умолчанию черный.

Ответы [ 3 ]

32 голосов
/ 12 июня 2009

Если вы не хотите создавать пользовательский элемент управления, вы можете попробовать это:

Подключитесь к событию покраски этикетки.

void label1_Paint(object sender, PaintEventArgs e)
{
    ControlPaint.DrawBorder(e.Graphics, label1.DisplayRectangle, Color.Blue, ButtonBorderStyle.Solid);
}

Взято из здесь Андрей Тозон

12 голосов
/ 12 июня 2009

Я объединил решения от robin.ellis и orandov, чтобы получить результат, который работал лучше всего для меня. Я создал пользовательский элемент управления, который унаследовал объект Label, а затем переопределил событие OnPaint.

Public Class nomLabel
   Inherits Label

  Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
      MyBase.OnPaint(e)

      ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, myColor, ButtonBorderStyle.Solid)
   End Sub

End Class

Спасибо за помощь!

8 голосов
/ 12 июня 2009

Я тоже столкнулся с этой проблемой и в итоге использовал обходной путь.

Создание пользовательского элемента управления, состоящего из метки, обернутой в панель.

Затем вы можете использовать панель, чтобы создать рамку и изменить ее цвет на любой другой.

Я обнаружил, что это хорошая идея (хотя и немного трудоемкая) в любом случае обернуть все элементы управления в вашем приложении, потому что когда дело доходит до выяснения, вам нужно настраиваемое свойство или изменение всех ваших элементов управления этим типа, вы можете просто изменить базовый элемент управления и все ваше приложение изменится.

...