public void HideFocusCues(Control control)//这里是关键,访问父类的私有成员
{
Type vType = typeof(Control);
FieldInfo vFieldInfo = vType.GetField("uiCuesState",
BindingFlags.Instance | BindingFlags.Public |
BindingFlags.NonPublic | BindingFlags.Static |
BindingFlags.FlattenHierarchy);
vFieldInfo.SetValue(control, 15);
{
Type vType = typeof(Control);
FieldInfo vFieldInfo = vType.GetField("uiCuesState",
BindingFlags.Instance | BindingFlags.Public |
BindingFlags.NonPublic | BindingFlags.Static |
BindingFlags.FlattenHierarchy);
vFieldInfo.SetValue(control, 15);
}
之后在paint函数或其他相关函数中加如下代码,选中矩形框就看不到了
HideFocusCues((Control)sender);
本文介绍了一种通过反射机制修改控件内部状态的方法,以实现隐藏控件的焦点提示功能。这种方法涉及使用 BindingFlags 访问 Control 类型的私有字段 uiCuesState,并将其设置为特定值以移除默认的焦点高亮。
437

被折叠的 条评论
为什么被折叠?



