我在c# win窗体中创建的一个自定义按钮出现问题。选中窗体时,按钮看起来很好,但当我单击窗体以外的地方时,按钮上就会出现边框。一个很好的例子是,当单击桌面时,窗体仍然最大化,这样你就可以看到它的内容。下面是问题的图像:
这并不是所有的按钮都会发生,只有当按钮被点击过的时候才会发生(一次只会出现在一个按钮上)。这让我相信这和按钮焦点提示有关,但是这些都被设置为false。边框被设置为0,我也把制表位设置为false。有什么建议吗?
z4bn682m1#
处理自定义按钮时,应设置:
button.TabStop = false; button.FlatStyle = FlatStyle.Flat; button.FlatAppearance.BorderSize = 0;
由于ButtonBase不支持Color.Transparent上的边框颜色,因此可以通过设置Argb颜色来解决此问题:
ButtonBase
Color.Transparent
button.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); //transparent
6jjcrrmo2#
fuex的答案理论上可以去掉边框,但是有一个bug,就是有时候在你改变按钮的使能状态后,按钮仍然会有焦点提示。(我在.Net 4.0中遇到了这个bug,我不知道这个bug在以后的版本中是否得到了修复)。要解决此错误,应禁用ShowFocusCues属性:
ShowFocusCues
protected override bool ShowFocusCues => false; // return base.ShowFocusCues;
2条答案
按热度按时间z4bn682m1#
处理自定义按钮时,应设置:
由于
ButtonBase
不支持Color.Transparent
上的边框颜色,因此可以通过设置Argb颜色来解决此问题:6jjcrrmo2#
fuex的答案理论上可以去掉边框,但是有一个bug,就是有时候在你改变按钮的使能状态后,按钮仍然会有焦点提示。
(我在.Net 4.0中遇到了这个bug,我不知道这个bug在以后的版本中是否得到了修复)。
要解决此错误,应禁用
ShowFocusCues
属性: