C#WinForms - 未选择表单时自定义按钮不需要的边框

时间:2012-02-22 16:50:35

标签: c# winforms button border

我在使用c#win表单创建的自定义按钮时出现问题。选择表单时按钮显示正常,但只要我点击表单,按钮上就会出现边框。发生这种情况的一个很好的例子是单击桌面但表单仍然最大化,以便您可以看到其内容。问题的图像可以在下面看到:

Button border problem

所有按钮都不会发生这种情况,只有在按钮被点击之前(一次只出现在一个按钮上)。这让我相信它与按钮焦点提示有关,但这些设置为假。边框设置为0,我也将tabstop设置为false。

有什么建议吗?

2 个答案:

答案 0 :(得分:90)

当您处理自定义按钮时,您应该设置:

button.TabStop = false;
button.FlatStyle = FlatStyle.Flat;
button.FlatAppearance.BorderSize = 0;

然后由于ButtonBase不支持Color.Transparent上的边框颜色,您可以通过设置Argb颜色来克服此问题:

button.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); //transparent

答案 1 :(得分:3)

fuex的答案可以在理论上删除边框,但是有一个错误,有时按钮在您更改按钮启用状态后仍然会有焦点提示。

(我在.Net 4.0中遇到了这个bug,我不知道在以后的版本中是否修复了这个bug)。

要解决此错误,您应该禁用ShowFocusCues属性:

protected override bool ShowFocusCues
{
    get
    {
        // return base.ShowFocusCues;
        return false;
    }
}