Как бы я изменил цвет рамки кнопки? - PullRequest
25 голосов
/ 23 ноября 2011

Это мой код:

buttonName = "btn" + y.ToString() + x.ToString();
Control btn = this.Controls.Find(buttonName, true)[0] as Control;
btn.BackColor = System.Drawing.Color.Blue;

Однако я не вижу изменяющих цвет границ свойств и т. П.

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

Существует ли код, аналогичный приведенному выше, который позволил бы мне изменить цвет границы кнопки?

Ответы [ 5 ]

47 голосов
/ 23 ноября 2011

Я не уверен, над каким приложением вы работаете, однако в winforms нет свойства border для кнопки непосредственно на нем, даже в дизайнере.Вы можете использовать плоский стиль кнопки.И ваш тип должен быть кнопкой.

вы можете сделать это следующим образом:

buttonName = "btn" + y.ToString() + x.ToString();
Button btn = this.Controls.Find(buttonName, true)[0] as Button;
btn.BackColor = System.Drawing.Color.Blue;
btn.FlatStyle = FlatStyle.Flat
btn.FlatAppearance.BorderColor = Color.Red;
btn.FlatAppearance.BorderSize = 1;

К сожалению, это будет работать только для кнопки с FlatStyle.

2 голосов
/ 23 ноября 2011

В зависимости от вашей структуры есть новое свойство с именем BorderColor

http://msdn.microsoft.com/en-us/library/system.windows.forms.flatbuttonappearance.bordercolor.aspx,

Вы это проверяли?

Также вот пример чего-то похожего

Изменение цвета границы элемента управления Windows Forms на фокусе

1 голос
/ 07 октября 2018

Я знаю, что этот вопрос задан давно (в 2011 году), но я думаю, что мой комментарий будет полезен для кого-то: без использования FlatStyle вы можете использовать ControlPaint.DrawBorder в событии Paint кнопки, которую вы хотите изменить цвет границы

    private void btnName_Paint(object sender, PaintEventArgs e)
    {
        Button btn = (Button)sender;

        ControlPaint.DrawBorder(e.Graphics, btn.ClientRectangle,
                                Color.LightGreen, 1, ButtonBorderStyle.Solid,
                                Color.LightGreen, 1, ButtonBorderStyle.Solid,
                                Color.LightGreen, 1, ButtonBorderStyle.Solid,
                                Color.LightGreen, 1, ButtonBorderStyle.Solid
                                );
    }

По данным Microsoft ( ссылка )

Относится к

.NET Framework

4.7.2, 4.7.1, 4.7, 4.6.2, 4.6.1, 4.6, 4.5.2, 4.5.1, 4.5, 4.0, 3.5, 3.0, 2.0, 1.1

1 голос
/ 23 ноября 2011

Вы можете использовать flatAppearance.BorderColor

    btn.FlatAppearance.BorderColor = System.Drawing.Color.Blue;
1 голос
/ 23 ноября 2011

Вам нужно разыграть свой Control как Button (или любой другой тип).Элемент управления является базовым классом и не будет содержать свойств для изменения цветов границ.Это приложение для Windows?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...