none
自定义集合类,,如何将变量添加到,,Control.::ControlCollection 类 ,, Level 5的难度... RRS feed

  • 问题

  •  请问有人办到过吗...
    如果添加到Control后,,,添加删除就方便多了...

    比如你添加一个button后,,会自动产生controls.add代码
    一般上看不明白就是没遇到,,我也不需要多写...

    而我自己做的控件自定义中的collection,,却不会自动添加到control.add

    如下图,,没有Controls.AddRange这句话....如何自定义后会有出现这句话...



    using System;  
    using System.Collections.Generic;  
    using System.ComponentModel;  
    using System.Diagnostics;  
    using System.Linq;  
    using System.Text;  
    using System.ComponentModel.Design;  
    using System.Windows.Forms;  
     
    namespace WindowsFormsApplication3  
    {  
        public partial class Component1 : Component  
        {  
            public Component1()  
            {  
                InitializeComponent();  
            }  
     
            public Component1(IContainer container)  
            {  
                container.Add(this);  
     
                InitializeComponent();  
            }  
            private List<ModbusRegisterEntry> modbusRegisters = new List<ModbusRegisterEntry>();  
     
            [Description("Enter names and values here")]  
            [Editor(typeof(CustomCollectionEditor), typeof(System.Drawing.Design.UITypeEditor))]  
            public List<ModbusRegisterEntry> Registers  
            {  
                get  
                {  
                    return modbusRegisters;  
                }  
            }  
     
            public class CustomCollectionEditor : System.ComponentModel.Design.CollectionEditor  
            {  
                public CustomCollectionEditor()  
                    : base(typeof(List<ModbusRegisterEntry>))  
                {  
                }  
     
                protected override bool CanSelectMultipleInstances()  
                {  
                    return false;  
                }  
     
                protected override string GetDisplayText(object value)  
                {  
                    ModbusRegisterEntry entry = (ModbusRegisterEntry)value;  
                    return entry.ToString();  
                }  
     
                //protected override object CreateInstance(Type itemType)  
                //{  
                //    ModbusRegisterEntry entry = new ModbusRegisterEntry();  
                //    //entry.Name = "New register entry";  
                //    return entry;  
                //}  
            }  
     
            public class ModbusRegisterEntry : Control  
            {  
                private string name1 = string.Empty;  
                private int _value;  
     
                [DisplayName("Register name")]  
                public string Name1  
                {  
                    get { return this.name1; }  
                    set { this.name1 = value; }  
                }  
     
                [DisplayName("Register value")]  
                public int Value  
                {  
                    get { return this._value; }  
                    set { this._value = value; }  
                }  
     
                public override string ToString()  
                {  
                    return Name;  
                }  
            }  
         }  
          
    }  
     

    这代码直接可运行....是以上控件的代码...
    谢谢各位mvp,大师.帮忙了...

    最终我想实现类似DataSet 中的DataTable, 他会自动产生DataTable.AddRange()
    • 已编辑 tssing 2009年2月17日 5:39
    2009年2月17日 5:08

答案

  • 有空请阅读:
    http://social.microsoft.com/forums/zh-CN/1897/thread/47f820a3-86d9-434e-a33d-8fe8709d1eb5/

    2、提问时要尽可能说清问题

         这个是先决条件,所以提问题时尽可能把自己在什么情总下遇到一个什么样的问题,或自己想要实现一个什么样的效果,最好给大家一个都了解的软件的实例效果。

        还有就是精简问题,把自己的核心问题提出来,代码尽量少而准,这样别人在阅读代码时也快。不要一下子就把所有代码粘上来,这样对回答问题的人来说要读好多无关的代码。


    好好学习,天天向上。
    • 已标记为答案 tssing 2009年2月17日 5:39
    2009年2月17日 5:20
  • 比如你添加一个button后,,会自动产生controls.add代码
    一般上看不明白就是没遇到,,我也不需要多写...

    而我自己做的控件自定义中的collection,,却不会自动添加到control.add
    • 已标记为答案 tssing 2009年2月17日 5:30
    2009年2月17日 5:23
  • Eri.cn 说:

    有空请阅读:
    http://social.microsoft.com/forums/zh-CN/1897/thread/47f820a3-86d9-434e-a33d-8fe8709d1eb5/

    2、提问时要尽可能说清问题

         这个是先决条件,所以提问题时尽可能把自己在什么情总下遇到一个什么样的问题,或自己想要实现一个什么样的效果,最好给大家一个都了解的软件的实例效果。

        还有就是精简问题,把自己的核心问题提出来,代码尽量少而准,这样别人在阅读代码时也快。不要一下子就把所有代码粘上来,这样对回答问题的人来说要读好多无关的代码。


    好好学习,天天向上。



    程序不可能一次性写好的,,问题也一样..慢慢解决...

    • 已标记为答案 tssing 2009年2月17日 5:30
    2009年2月17日 5:25
  • 你给我什么帖嘛...我还以为是解答...
    这个问题,在全中国搜索过了....自己也不断尝试了,,,都没找到相应的方案...
    • 已标记为答案 tssing 2009年2月17日 5:30
    2009年2月17日 5:27
  • 你用的什么版本的vs?
    还能看到control.add
    好好学习,天天向上。
    • 已标记为答案 tssing 2009年2月17日 5:38
    2009年2月17日 5:34
  • 我想实现类似DataSet中的DataTable的功能...类似..他会自动添加到数组...
    • 已标记为答案 tssing 2009年2月17日 5:38
    2009年2月17日 5:37
  • 不会是要将ilist重写过吧,,,会死人的哦...
    • 已标记为答案 tssing 2009年2月17日 5:45
    2009年2月17日 5:45

全部回复

  • 有空请阅读:
    http://social.microsoft.com/forums/zh-CN/1897/thread/47f820a3-86d9-434e-a33d-8fe8709d1eb5/

    2、提问时要尽可能说清问题

         这个是先决条件,所以提问题时尽可能把自己在什么情总下遇到一个什么样的问题,或自己想要实现一个什么样的效果,最好给大家一个都了解的软件的实例效果。

        还有就是精简问题,把自己的核心问题提出来,代码尽量少而准,这样别人在阅读代码时也快。不要一下子就把所有代码粘上来,这样对回答问题的人来说要读好多无关的代码。


    好好学习,天天向上。
    • 已标记为答案 tssing 2009年2月17日 5:39
    2009年2月17日 5:20
  • 比如你添加一个button后,,会自动产生controls.add代码
    一般上看不明白就是没遇到,,我也不需要多写...

    而我自己做的控件自定义中的collection,,却不会自动添加到control.add
    • 已标记为答案 tssing 2009年2月17日 5:30
    2009年2月17日 5:23
  • Eri.cn 说:

    有空请阅读:
    http://social.microsoft.com/forums/zh-CN/1897/thread/47f820a3-86d9-434e-a33d-8fe8709d1eb5/

    2、提问时要尽可能说清问题

         这个是先决条件,所以提问题时尽可能把自己在什么情总下遇到一个什么样的问题,或自己想要实现一个什么样的效果,最好给大家一个都了解的软件的实例效果。

        还有就是精简问题,把自己的核心问题提出来,代码尽量少而准,这样别人在阅读代码时也快。不要一下子就把所有代码粘上来,这样对回答问题的人来说要读好多无关的代码。


    好好学习,天天向上。



    程序不可能一次性写好的,,问题也一样..慢慢解决...

    • 已标记为答案 tssing 2009年2月17日 5:30
    2009年2月17日 5:25
  • 你给我什么帖嘛...我还以为是解答...
    这个问题,在全中国搜索过了....自己也不断尝试了,,,都没找到相应的方案...
    • 已标记为答案 tssing 2009年2月17日 5:30
    2009年2月17日 5:27
  • 你用的什么版本的vs?
    还能看到control.add
    好好学习,天天向上。
    • 已标记为答案 tssing 2009年2月17日 5:38
    2009年2月17日 5:34
  • 我想实现类似DataSet中的DataTable的功能...类似..他会自动添加到数组...
    • 已标记为答案 tssing 2009年2月17日 5:38
    2009年2月17日 5:37
  • 不会是要将ilist重写过吧,,,会死人的哦...
    • 已标记为答案 tssing 2009年2月17日 5:45
    2009年2月17日 5:45