积极答复者
自定义集合类,,如何将变量添加到,,Control.::ControlCollection 类 ,, Level 5的难度...

问题
-
请问有人办到过吗...
如果添加到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
答案
-
有空请阅读:
http://social.microsoft.com/forums/zh-CN/1897/thread/47f820a3-86d9-434e-a33d-8fe8709d1eb5/
2、提问时要尽可能说清问题这个是先决条件,所以提问题时尽可能把自己在什么情总下遇到一个什么样的问题,或自己想要实现一个什么样的效果,最好给大家一个都了解的软件的实例效果。
还有就是精简问题,把自己的核心问题提出来,代码尽量少而准,这样别人在阅读代码时也快。不要一下子就把所有代码粘上来,这样对回答问题的人来说要读好多无关的代码。
好好学习,天天向上。- 已标记为答案 tssing 2009年2月17日 5:39
-
Eri.cn 说:
有空请阅读:
http://social.microsoft.com/forums/zh-CN/1897/thread/47f820a3-86d9-434e-a33d-8fe8709d1eb5/
2、提问时要尽可能说清问题这个是先决条件,所以提问题时尽可能把自己在什么情总下遇到一个什么样的问题,或自己想要实现一个什么样的效果,最好给大家一个都了解的软件的实例效果。
还有就是精简问题,把自己的核心问题提出来,代码尽量少而准,这样别人在阅读代码时也快。不要一下子就把所有代码粘上来,这样对回答问题的人来说要读好多无关的代码。
好好学习,天天向上。
程序不可能一次性写好的,,问题也一样..慢慢解决...- 已标记为答案 tssing 2009年2月17日 5:30
全部回复
-
有空请阅读:
http://social.microsoft.com/forums/zh-CN/1897/thread/47f820a3-86d9-434e-a33d-8fe8709d1eb5/
2、提问时要尽可能说清问题这个是先决条件,所以提问题时尽可能把自己在什么情总下遇到一个什么样的问题,或自己想要实现一个什么样的效果,最好给大家一个都了解的软件的实例效果。
还有就是精简问题,把自己的核心问题提出来,代码尽量少而准,这样别人在阅读代码时也快。不要一下子就把所有代码粘上来,这样对回答问题的人来说要读好多无关的代码。
好好学习,天天向上。- 已标记为答案 tssing 2009年2月17日 5:39
-
Eri.cn 说:
有空请阅读:
http://social.microsoft.com/forums/zh-CN/1897/thread/47f820a3-86d9-434e-a33d-8fe8709d1eb5/
2、提问时要尽可能说清问题这个是先决条件,所以提问题时尽可能把自己在什么情总下遇到一个什么样的问题,或自己想要实现一个什么样的效果,最好给大家一个都了解的软件的实例效果。
还有就是精简问题,把自己的核心问题提出来,代码尽量少而准,这样别人在阅读代码时也快。不要一下子就把所有代码粘上来,这样对回答问题的人来说要读好多无关的代码。
好好学习,天天向上。
程序不可能一次性写好的,,问题也一样..慢慢解决...- 已标记为答案 tssing 2009年2月17日 5:30