我写了个控件,具有一些属性和方法如何能在运行期,动态地增加一些属性

解决方案 »

  1.   

    什么样的属性呢
    http://dev.poptool.net/wangluo/asp.net/zujian/13235.html如果只是外观方面的,用js处理就可以了
      

  2.   

    什么叫运行时增加属性?所以你最好说一下:你的目的到底是什么?你到底要解决什么时机问题?如果是在设计时,允许在propertygrid中多几个可设置属性,或者在运行时多几个可设置(肯定不是通过通常属性的访问方式访问)属性,而不一定是真的在类型中增加了几个新的严格意义上C#属性的话,那是可以做到的。另外一种变通就是动态编译并生成增加了新属性的衍生类型。这样是可以增加严格意义上的属性的,但是既然是运行时增加的,你使用这个类型的代码是如何获取衍生类型的实例并知道这几个新属性的存在的呢?这还是取决于你的问题本身,那很可能会依赖于一大堆预先建立的机制,来确保这种可扩展性。
      

  3.   

    我的想法或者挺复杂,或者挺愚蠢。
    明说一下:应用程序配置是一个比较基础的问题,有很多解决办法,
    近日研究propertygrid时突然有一个想法,
    可否用propertygrid来存储,修改用户的应用程序配置呢?
    就是提供给用户一个propertygrid的UI,来指定或修改配置,
    就是重写一个propertygrid控件,设计时指定一个配置文件名,
    配置文件应该是一个XML,里面包括名称、类型、作用域、值等
    运行时,屏蔽propertygrid本省的属性,按配置文件的内容形成新的属性。于是
    重写了一个propertygrid控件,
    写了一个测试类,添加了两个实验的属性,并实现了Load和Save的方法
    但是,对于不同的应用而言,类中的属性应该由配置文件获取
    于是就有了上面的问题不只我的想法是否可行
    大家在处理应用程序配置时都用那种方式?
      

  4.   

    我估计你可能要干这个。你可以在你的类型中定义一个集合(PropertyGrid本身支持针对集合的可视化维护),并在设计时增加集合的子对象,而该对象实际上是一个属性的描述对象。说白了,你需要为你的对象和气属性定义一个对象描述类型和属性描述类型(有点类似反射中的概念)。你实际上是针对对象描述和属性描述进行PropertyGrid设置,然后在设计时或者运行时根据这个描述生成相应代码。如果你需要对非属性类的一些广义属性或者关联对象的属性进行类似自身属性的设置,那你可以实现System.ComponentModel.ICustomTypeDescriptor,并把你实现的ICustomTypeDescriptor对象设置到PropertyGrid作为其当SelectedObject即可。
      

  5.   

    Dynamic Properties in the PropertyGrid
    http://www.codeproject.com/cs/miscctrl/DynPropGrid.asp
      

  6.   

    or
    PropertyGrid Control in WinForms
    http://www.codeproject.com/csharp/propertygrid.asp
      

  7.   

    用.NET PropertyGrid控件实现对象动态属性的配置http://engine.cqvip.com/content/citation.dll?id=15462984