日期:2014-05-17  浏览次数:20878 次

C# 自定义控件,自定义属性编辑器如何获取相应组建中其他属性值
自定义控件 设置了个自定义属性,自定义属性有自定义编辑器,自定义编辑器需要根据自定义控件其它的属性之筛选数据,
如何取到这个自定义控件的其他属性值。
C# code

public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object value)
        {
            System.Windows.Forms.Design.IWindowsFormsEditorService service =(System.Windows.Forms.Design.IWindowsFormsEditorService)provider.GetService(typeof(System.Windows.Forms.Design.IWindowsFormsEditorService));
            if (service == null)
            {
                return null;
            }
            PropertyWindow form = new PropertyWindow();
          
form.TableName="这里需要这个自定义控件的其他属性值";

            if (service.ShowDialog(form) == DialogResult.OK)
            {
                return form.SelectedValue;
            }
            return value;
        }



------解决方案--------------------
1.取到对象就可以 使用了啊, 如果权限不够 把 modif 那个属性 改成 Public 
2.对象 定义一个公共属性 来做值传递。
3.如果需要扩展事件的方式那就 委托。
------解决方案--------------------
一般可以用ITypeDescriptorContext中拿到编辑对象。假设自定义控件叫MyControl,那么:
C# code

MyControl my = context==null ? null : context.Instance as MyControl;
if(my != null)
{
    form.TableName = my.XXX;
}