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

Jpi*_*pin 40 c# border button winforms

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

按钮边框问题

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

有什么建议?

Oma*_*mar 98

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

button.TabStop = false;
button.FlatStyle = FlatStyle.Flat;
button.FlatAppearance.BorderSize = 0;
Run Code Online (Sandbox Code Playgroud)

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

button.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); //transparent
Run Code Online (Sandbox Code Playgroud)

  • 这有效:myButton.FlatAppearance.BorderColor = Color.FromArgb(0,255,255,255); 非常感谢你! (2认同)

小智 6

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

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

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

protected override bool ShowFocusCues => false; // return base.ShowFocusCues;
Run Code Online (Sandbox Code Playgroud)