C#WinForms - 自定义按钮不需要的边框,当表单未选中

问题描述:

我遇到了一个自定义按钮的问题,我在c#win窗体中创建了..当选择窗体时按钮显示正常,但只要我点击离开按钮上会出现一个边框。当发生这种情况时,一个很好的例子就是当桌面被点击时,表单仍然是最大化的,所以你可以看到它的内容。问题的图像可以看到下面:C#WinForms - 自定义按钮不需要的边框,当表单未选中

Button border problem

这不会发生在所有的按钮,只有当按钮被点击前(只在一个按钮出现在一个时间)。这导致我相信这是与按钮焦点提示有关,但它们被设置为false。边框设置为0,我也有tabstop设置为false。

有什么建议吗?

+2

Metro?的WinForms? WPF? Silverlight的? Windows Phone? ASP.Net? MonoTouch的? – SLaks 2012-02-22 16:52:15

+0

致歉,c#win表格 – Jpin 2012-02-22 16:53:53

当你处理一个自定义按钮,你应该设置:

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 
+0

感谢您的回复,我已经有这些设置为你所述 – Jpin 2012-02-22 17:48:09

+1

这工作:myButton.FlatAppearance.BorderColor = Color.FromArgb(0,255,255,255); 非常感谢! – Jpin 2012-02-22 22:23:22

+0

谢谢,我也有类似的问题。这个答案解决了它! – 2016-06-13 10:40:12

fuex的答案可以从理论上删除边框,但有一个错误,有时按钮仍然有焦点提示后,您更改按钮启用状态(我碰到.Net 4.0中的这个bug,我不知道错误已修复或不在以后的版本中) 。为了解决这个问题,你应该禁用focuscue propoerty

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