C# WinForms - custom button unwanted border when form unselected
When you're dealing with a custom button you should set:
button.TabStop = false;
button.FlatStyle = FlatStyle.Flat;
button.FlatAppearance.BorderSize = 0;
Then since ButtonBase
doesn't support the border color on Color.Transparent
, you can overcome the issue by setting an Argb color:
button.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); //transparent
fuex's answer can remove border in theory, but there is a bug that sometimes button will still have focus cue after you change the button enable status.
(I ran into this bug in .Net 4.0 and I don't know the bug is fixed or not in later versions).
To work around this bug, you should disable the ShowFocusCues
property:
protected override bool ShowFocusCues => false; // return base.ShowFocusCues;