Как изменить цвет границы формы С#?

Я хотел бы изменить цвет границы формы окна (граница с заголовком формы). Пример, который я нашел в codeplex, слишком длинный и запутанный. Может ли кто-нибудь помочь мне в чем-то более простом?


person don    schedule 18.09.2009    source источник


Ответы (6)


Переопределите его с помощью:

protected override void OnPaint(PaintEventArgs e)
{
    ControlPaint.DrawBorder(e.Graphics, ClientRectangle, Color.[your_color], ButtonBorderStyle.Solid);
}
person Hacki    schedule 25.12.2019

К сожалению, поскольку граница формы рисуется операционной системой, это сложная задача. Нет никакого реального способа обойти это.

НЕ нажимайте ссылку ProjectDistributor на странице CodePlex ниже.

Однако Проект CodePlex для рисования пользовательских границ делает это очень просто. Просто создайте форму, используя SkinnedForm из этого проекта вместо стандартной формы, и она должна работать — вам действительно не нужно делать ничего другого в своем коде.

person Reed Copsey    schedule 18.09.2009
comment
Спасибо за ответ, Рид ... даже с кислой треской от codeplex у меня все еще есть проблема с изменением цвета верхней границы или, скорее, всего цвета границы. - person don; 21.09.2009

Обходной путь — просто выполните следующие действия:

  • Установите FormBorderStyle на None.
  • Накройте форму панелью и оставьте немного места для границы.
  • Установите желаемый цвет границы в качестве цвета задней панели формы.

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

Окончательный результат

введите здесь описание изображения

person Essam Mohamed Fahmi    schedule 05.08.2017
comment
Точно, это лучшее решение, но, к сожалению, с множеством проблем... Например, добавить возможность переместить эту панель, добавить изменение размера формы и т. д. - person Mohammad Fathi MiMFa; 04.05.2019

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

  • Создать форму
  • Установите для FormBorderStyle значение None
  • Добавьте 4 панели
  • Установите цвет фона панелей на цвет границы, который вы хотите
  • Прикрепите по одному к верхнему, нижнему, левому и правому краям
  • Установите высоту (сверху/снизу) или ширину (слева/справа) в соответствии с толщиной границы, которую вы хотите. 2 или 3 выглядит очень хорошо.

Он выглядит как граница, он будет изменять размер вместе с окном, и вы можете вставить что угодно еще в форму, которую хотите. Ограничение в том, что вы должны сделать это самым первым, что вы добавите в форму.

person biskit1967    schedule 26.01.2021

Ниже «ForeColor» должен быть параметр «FormBorderStyle». Вы можете отредактировать его в VisualStudio 2015. Или вы можете перейти по пути панели управления, который должен быть примерно таким: «Панель управления\Внешний вид и персонализация\Персонализация», это будет второй параметр под названием «Цвет» может изменить его на желаемый цвет, он изменит цвет границы во всех программах на установленный вами цвет.

person LunaDev    schedule 06.04.2017
comment
Я думаю, что этот пользователь спрашивает, как выполнить эту задачу с помощью кода. - person Josh Face; 10.05.2020

person    schedule
comment
Вопрос был о цвете границы, а не о цвете фона. - person Igby Largeman; 13.04.2012