我正在使用设计器(继承自ControlDesigner
)进行自定义控件。
我知道如何使用DesignerVerbCollection
添加动词。但我不知道如何添加与Control属性相关的动词和下拉列表。
这是一张解释我的意思的图片。
我的Visual Studio版本是西班牙语,所以我可以翻译一些例子:
我知道Edit items...
是一个动词,但我不知道如何打开该集合。
View和ImageList属性是组合框。我不知道如何添加组合框。
编辑:我在问这个问题之前用Google搜索,但是我找不到与我的问题有关的任何内容。
编辑2:我不想将ListView属性添加到我的控件中。我只需要将自定义属性添加到自定义控件的设计器中。
编辑3:我检查了https://referencesource.microsoft.com/#System.Design/System/Windows/Forms/Design/ListViewDesigner.cs,c996e9fb36c3ed37但.NET源代码显示了无体代码。
答案 0 :(得分:0)
DesignerActionList
是你要找的东西。
public class MyControlDesigner : ControlDesigner {
private DesignerActionListCollection _ActionLists;
private MyControl myControl;
public MyControlDesigner() : base() {
_ActionLists = new DesignerActionListCollection();
_ActionLists.AddRange(base.ActionLists);
_ActionLists.Add(new MyActionList(this));
}
public override DesignerActionListCollection ActionLists {
get {
return _ActionLists;
}
}
public override void Initialize(IComponent component) {
base.Initialize(component);
if (Control is MyControl) {
myControl = (MyControl) Control;
}
}
public class MyActionList : DesignerActionList {
private MyControlDesigner Designer;
public MyActionList(MyControlDesigner Designer) : base(Designer.Component) {
this.Designer = Designer;
}
public string MyProperty {
get {
return Designer.myControl.MyProperty;
}
set {
Designer.myControl.MyProperty = value;
}
}
public override DesignerActionItemCollection GetSortedActionItems() {
DesignerActionItemCollection items = new DesignerActionItemCollection();
//Replace Behavior with your property's category (if applicable)
items.Add(new DesignerActionPropertyItem("MyProperty", "My property", "Behavior", "This is my property in the designer"));
return items;
}
}
}
属性 DesignerActionPropertyItem
DesignerActionMethodItem
行动
有关详细信息:https://msdn.microsoft.com/en-us/library/sey0f414.aspx