如何更改按钮的边框颜色?

时间:2011-11-23 15:32:27

标签: c# winforms

这是我的代码:

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

但是,我看不到边框颜色更改属性等。

我使用了这段代码,因为我的表单上有很多按钮,而且这些按钮的属性都可以改变,所以不是单独调用它们,而是编写了可以处理它们的代码。

是否有类似上面的代码,这样我可以更改按钮的边框颜色?

5 个答案:

答案 0 :(得分:47)

我不确定你正在使用什么类型的应用程序,但是在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的按钮。

答案 1 :(得分:2)

根据您的框架,有一个名为BorderColor的新属性

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

你检查过吗?

此处还有一个类似的例子

Change border color of Windows Forms Control on focus

答案 2 :(得分:1)

您需要将Control转换为Button(或任何类型)。 Control是基类,不包含用于修改边框颜色的属性。这是一个Windows应用程序吗?

答案 3 :(得分:1)

你可以使用flatAppearance.BorderColor

    btn.FlatAppearance.BorderColor = System.Drawing.Color.Blue;

答案 4 :(得分:0)

我知道这个问题是很久以前(在2011年)提出的,但是我认为我的评论对某人有用:如果不使用FlatStyle,则可以在要更改的按钮的Paint事件中使用ControlPaint.DrawBorder边框颜色

    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(link

  

适用于

     

.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