c# - Custom MenuItemPanel (How add Items on Design Time?) -
the problem follows:
in user control have label list (list ) fills adding labels uc through "smart tag" (using designeractionmethoditem).
the problem works correctly when in design time, example, add 3 items @ design time, when test application these items disappear if had never added.
p.s.:
i have:
mycontrol class,
[designer(typeof(menuitempaneldesigner ))] public partial class menuitempanel : usercontrol { private list<label> _listaitems; public menuitempanel() { initializecomponent(); } public list<label> listaitems { { if (this._listaitems == null) { this._listaitems = new list<label>(); } return this._listaitems; } } public void agregaritem() { label nuevoitem = new label(); nuevoitem.text = "item " + this._listaitems.count; nuevoitem.autosize = false; nuevoitem.textalign = contentalignment.middlecenter; nuevoitem.cursor = cursors.hand; this.listaitems.add(nuevoitem); this.controls.add(nuevoitem); nuevoitem.dock = dockstyle.top; nuevoitem.height = 50; } }
mycontroldesigner class
class menuitempaneldesigner : system.windows.forms.design.controldesigner { private designeractionlistcollection actionlists; public override designeractionlistcollection actionlists { { if (null == actionlists) { actionlists = new designeractionlistcollection(); actionlists.add(new menuitempaneldesigneractionlist(this.component)); } return actionlists; } } }
and mycontroldesigneractionlist
class menuitempaneldesigneractionlist : designeractionlist { private menuitempanel colusercontrol; private designeractionuiservice designeractionuisvc = null; //the constructor associates control smart tag list. public menuitempaneldesigneractionlist(icomponent component) : base(component) { this.colusercontrol = (menuitempanel)component; this.designeractionuisvc = (designeractionuiservice)getservice(typeof(designeractionuiservice)); } // implementation of abstract method creates smart tag items, // associates targets, , collects list. public override designeractionitemcollection getsortedactionitems() { designeractionitemcollection items = new designeractionitemcollection(); //define static section header entries. items.add(new designeractionheaderitem("items")); items.add(new designeractionmethoditem(this,"agregaritem","agregar item")); return items; } // metodos public void agregaritem() { this.colusercontrol.agregaritem(); } }
Comments
Post a Comment