开发过程中遇到按钮被选中时有黑色边框,如下:
查资料找了好久终于找到一个解决方案,但是该方案使用的是反射,比较麻烦。查到的方法如下:
using System.Reflection
Private void SetButton(Button button) {
MethodInfo methodinfo = button.GetType().GetMethod("SetStyle", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod);
methodinfo.Invoke(button,BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, null, new object[] {ControlStyles.Selectable, false}, Application.CurrentCulture);
}
以上方法来自以下文章,非常感谢这位大哥。C#无焦点按钮(非自定义控件)-CSDN博客文章浏览阅读4k次,点赞5次,收藏10次。C#无焦点按钮(非自定义控件)。https://blog.csdn.net/all77889900/article/details/5832415
但是我仔细一看,这不就是 buttonObject.SetStyle(ControlStyles.Selectable, false); 么?然后我在我自定义的按钮的构造函数中加了这一句(非自定义组件只能使用转载文章中的反射的方法调用此方法,因为该方法定义是 protected):
// 去掉黑框
this.SetStyle(ControlStyles.Selectable, false);
然后问题完美解决,效果如下: