隐藏组合控件的某个子控件属性问题
来源:互联网 发布:华美淘宝客使用说明 编辑:程序博客网 时间:2024/06/06 02:11
写了个想隐藏一个组合控件的子控件属性的 Designer,只要加在控件上,窗体以及该窗体上的控件的 所有属性都被隐藏了,
我只想显示DemoControl上面子控件 Box的 标记了CustomHelperAttribute 特性的 属性,其余都隐藏, 结果所有的都隐藏了。
大家帮忙分析分析下。
[Designer(typeof(ChildrenPropertiesFilterDesigner), typeof(IDesigner))]
public class DemoControl: Control
{
private TextBox box;
public TextBox Box
{
get{ return box ;}
}
public DemoControl()
{
box = new TextBox();
//此处一些代码省略。。。
this.Controls.Add(box);
}
[CustomHelperAttribute ("仅显示这个属性。", true)]
public string ShowMe
{
get; set;
}
}
public class ChildrenPropertiesFilterDesigner : ControlDesigner
{/// <summary>
/// 设置控件的属性Visible
/// </summary>
/// <param name="component"></param>
private void SetPropertyVisible(Object component)
{
Type browseType = typeof(BrowsableAttribute);
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(component);
foreach (PropertyDescriptor p in properties)
{
AttributeCollection attrs = properties[p.Name].Attributes;
AttributeCollection piAtrrs = p.Attributes;
bool visible = false;
foreach (Attribute a in piAtrrs)
{
if (a.GetType() == typeof(CustomHelperAttribute))
{
CustomHelperAttribute ca = (CustomHelperAttribute)a;
visible = ca.AllowShow;
break;
}
}
if (visible == false)
{
FieldInfo field = browseType.GetField("browsable", BindingFlags.Instance | BindingFlags.NonPublic);
field.SetValue(attrs[browseType], visible);
}
}
}
protected override void PreFilterProperties(IDictionary properties)
{
TextBox box = (TextBox)base.Control.Controls[0];
if (box != null)
{
SetPropertyVisible(box);
}
base.PreFilterProperties(properties);
}
}
- 隐藏组合控件的某个子控件属性问题
- 显示隐藏控件的属性
- android 控件的隐藏属性 .
- DatePickerDialog 隐藏子控件
- C# winform 删除某个控件上的子控件
- 组合控件-自定义属性
- 简单的自定义组合控件 自定义属性
- 获取iOS控件的隐藏属性
- RelativeLayout的子控件的布局属性
- RelativeLayout的子控件的布局属性
- RelativeLayout子控件的一些属性
- 自定义控件:自定义组合控件+自定义属性
- 自定义控件 ----- 属性与组合控件
- winform 如何获取某个子控件的子控件并操作它
- android 组合控件-属性获取
- 自定义组合控件和属性
- Android 自定义组合控件,属性
- MFC 如何改变某个子控件的文本颜色
- 先进先出(FIFO)置换算法
- hdu 2101 A + B Problem Too(数论)
- ubuntu10.10 驱动安装(解决显卡驱动引起的不能进入图形界面)
- YUV格式详细解释与FFMPEG的关系
- android 高手之路
- 隐藏组合控件的某个子控件属性问题
- Cocos2d-x环境搭建及平台移植、如何删除xcode里的cocos2d-x模板
- 代码混淆(-)
- MFC如何使控件大小随着对话框大小自动调整
- 几个java编程的典型例子
- 代码混淆(二) android.support.v4
- volatile类型变量
- 问题C模块化与C++
- 了解 Web 服务规范: 第 1 部分:SOAP