i using usercontrol uitypeeditor. user control has ok , cancel buttons nothing except display messagebox either ok or cancel , hide user control. when click 1 of buttons, propertygrid displays empty box usercontrol until click away. box disappears , dialog displayed.

here user control code:
using system; using system.windows.forms; namespace j2associates.tools.winforms.controls.designtimesupport.supportingclasses { public partial class simpletest : usercontrol { public bool cancelled { get; set; } public simpletest() { initializecomponent(); } private void btnok_click(object sender, eventargs e) { cancelled = false; this.hide(); } private void btncancel_click(object sender, eventargs e) { cancelled = true; this.hide(); } } } here uitypeeditor code:
using system; using system.drawing.design; using system.windows.forms; using system.windows.forms.design; using j2associates.tools.winforms.controls.designtimesupport.supportingclasses; namespace j2associates.tools.winforms.controls.designtimesupport.editors { internal class timeelementseditor : uitypeeditor // propertyeditorbase<timeelementsusercontrol> { public override uitypeeditoreditstyle geteditstyle(system.componentmodel.itypedescriptorcontext context) { return uitypeeditoreditstyle.dropdown; } public override object editvalue(system.componentmodel.itypedescriptorcontext context, iserviceprovider provider, object value) { if (value.gettype() == typeof(j2atimepicker.timeelementoptions)) { var editorservice = provider.getservice(typeof(iwindowsformseditorservice)) iwindowsformseditorservice; if (editorservice != null) { using (var st = new simpletest()) { editorservice.dropdowncontrol(st); if (st.cancelled) { messagebox.show("cancel"); } else { messagebox.show("ok"); } editorservice.closedropdown(); } } } return value; } } } any ideas and/or suggestions appreciated.
sigh, it's easy when find it.
i needed pass iwindowsformseditorservice in via overloaded constructor, cache , call it's closedropdown method in button click events instead of hiding user control. works expected.
/// <summary> /// displays ok , cancel button. when 1 pressed, /// dialog closed , message box displayed. /// actual value of property unchanged throughout. /// </summary> /// <remarks>the toolboxitem attribute prevents control being displayed in toolkit.</remarks> [toolboxitem(false)] public partial class simpletest : usercontrol { public bool cancelled { get; set; } private iwindowsformseditorservice m_editorservice; // require use of desired overloaded constructor. private simpletest() { initializecomponent(); } internal simpletest(iwindowsformseditorservice editorservice) : this() { // cache editor service. m_editorservice = editorservice; } private void btnok_click(object sender, eventargs e) { cancelled = false; m_editorservice.closedropdown(); } private void btncancel_click(object sender, eventargs e) { cancelled = true; m_editorservice.closedropdown(); } } and here modified editor call:
using (var simpletest = new simpletest(editorservice)) { editorservice.dropdowncontrol(simpletest); messagebox.show(simpletest.cancelled ? "cancelled" : "ok"); }
Comments
Post a Comment