winforms 自定义按钮在未选中窗体时不需要的边框

xbp102n0  于 2022-11-25  发布在  其他
关注(0)|答案(2)|浏览(131)

我在c# win窗体中创建的一个自定义按钮出现问题。选中窗体时,按钮看起来很好,但当我单击窗体以外的地方时,按钮上就会出现边框。一个很好的例子是,当单击桌面时,窗体仍然最大化,这样你就可以看到它的内容。下面是问题的图像:

这并不是所有的按钮都会发生,只有当按钮被点击过的时候才会发生(一次只会出现在一个按钮上)。这让我相信这和按钮焦点提示有关,但是这些都被设置为false。边框被设置为0,我也把制表位设置为false。
有什么建议吗?

z4bn682m

z4bn682m1#

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

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
6jjcrrmo

6jjcrrmo2#

fuex的答案理论上可以去掉边框,但是有一个bug,就是有时候在你改变按钮的使能状态后,按钮仍然会有焦点提示。
(我在.Net 4.0中遇到了这个bug,我不知道这个bug在以后的版本中是否得到了修复)。
要解决此错误,应禁用ShowFocusCues属性:

protected override bool ShowFocusCues => false; // return base.ShowFocusCues;

相关问题