带有集合的自定义控件:集合编辑器出现但立即再次消失
Posted
技术标签:
【中文标题】带有集合的自定义控件:集合编辑器出现但立即再次消失【英文标题】:custom control with Collection: the Collection Editor appears but immediate dissappears again 【发布时间】:2021-04-10 23:35:09 【问题描述】:我正在尝试创建一个自定义控件(应显示在工具箱中),该控件必须具有另一个类的集合。 我使用this question 作为我的指导方针。 但是我遇到了以下问题。
当我将控件放到窗体上,然后单击 dsTables 属性上的 3dotted 按钮,我可以看到 Collection Editor Form
出现了,但很快又消失了。
所以我一定是忘记了什么。
这是我的代码完整代码
public partial class gttDataSet : DataSet
private dsTables _dsTables = new dsTables();
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Editor("System.ComponentModel.Design.CollectionEditor, System.Design", typeof(UITypeEditor))]
public dsTables gttTables
get return _dsTables;
set _dsTables = value;
public class dsTables : BaseCollection
// See `EDIT 2:` at the bottom of the question
public object[] Items()
object[] test = List.ToArray();
return test;
// See `EDIT 1:` at the bottom of the question
public dsTable Item(int index)
return (dsTable)List[index];
public dsTable Add()
dsTable Result = new dsTable();
this.List.Add(Result);
return Result;
public void Remove(dsTable table)
List.Remove(table);
public int IndexOf(dsTable table)
return List.IndexOf(table);
public bool Contains(dsTable table)
return List.Contains(table);
public class dsTable
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
string SelectText get; set;
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
string SelectTextForUpdate get; set;
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
string DesignWhereText get; set;
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
string UserWhereText get; set;
bool IsStoredProcedure get; set;
bool RetrieveColumns get;
为什么Collection Editor Form
出现后立即消失?
编辑 1: 将属性 Item 添加到 Collection 类 dsTables 中,因为在 this 站点上,他们说集合编辑器需要它
编辑 2:
添加了public object[] Items()
,因为一些网站告诉我集合编辑器需要它来确定要处理的对象的类型。
不幸的是它不能解决我的问题
编辑 3: 尝试使用 Items 作为属性而不是方法。但这也没有解决问题。
public object[] Items
get
object[] test = List.ToArray();
return test;
set
_dsTables.Clear();
foreach (object item in value)
_dsTables.Add((dsTable)item);
【问题讨论】:
【参考方案1】:终于找到问题了,原来是我用错了继承自的类型
所以
public class dsTables : BaseCollection
必须
public class dsTables : CollectionBase
现在Collection Editor Windows
出现并保持不变。
【讨论】:
以上是关于带有集合的自定义控件:集合编辑器出现但立即再次消失的主要内容,如果未能解决你的问题,请参考以下文章