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

39

这是我的代码:

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

然而,我没有看到任何改变边框颜色的属性或类似的东西。

我使用了这段代码,因为我的表单上有很多按钮,其中任何一个按钮的属性都可能会发生变化,所以我不想逐个调用它们,而是编写了能够处理它们的代码。

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


你看不到边框颜色的变化,但在你的代码中你设置了控件的BackColor... - Abbas
哦,背景颜色变化得很好。但是关于边框颜色,我找不到可以修改的属性。无论如何,从那段代码中看不到。 - zack_falcon
5个回答

71

我不确定你正在开发何种应用程序,然而在winforms中,即使在设计器中也没有一个直接作用于按钮的边框属性。你可以使用扁平样式按钮。而你的类型将会是button。

你可以这样实现:

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的按钮。


好的,那很快。谢谢!如果我做出以下更改,那段代码就能工作: Button btn = this.Controls.Find(buttonName, true)[0] as Button; - zack_falcon
抱歉,当我复制你的代码时,我错过了第二个输入。已编辑答案。 - Jay
可以在属性窗口中使用“Flat Appearance”选项。 - Qwerty

7

您可以使用flatAppearance.BorderColor属性

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

5

我知道这个问题很久以前就被问过了(在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
                                );
    }

根据微软(链接)的说法:
适用于.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版本。

3

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

是的,这是一个Windows应用程序。我如何将我的控件转换为按钮? - zack_falcon
Button button = control as Button; 或者 Button button = (Button)control; - MatthiasG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接