private unsafe void OnGetTypeConverterAndTypeEditor(Com2PropertyDescriptor sender, GetTypeConverterAndTypeEditorEvent gveevent) { object target = sender.TargetObject; if (target is VSSDK.IProvidePropertyBuilder propBuilder) { string guidString = null; VSSDK.CTLBLDTYPE pctlBldType = 0; if (GetBuilderGuidString(propBuilder, sender.DISPID, ref guidString, &pctlBldType)) { gveevent.TypeEditor = new Com2PropertyBuilderUITypeEditor(sender, guidString, pctlBldType, (UITypeEditor)gveevent.TypeEditor); } } }
private unsafe void OnGetBaseAttributes(Com2PropertyDescriptor sender, GetAttributesEvent attrEvent) { if (sender.TargetObject is VSSDK.IProvidePropertyBuilder target) { string s = null; VSSDK.CTLBLDTYPE bldrType = 0; bool builderValid = GetBuilderGuidString(target, sender.DISPID, ref s, &bldrType); // we hide IDispatch props by default, we we need to force showing them here if (sender.CanShow && builderValid) { if (typeof(Oleaut32.IDispatch).IsAssignableFrom(sender.PropertyType)) { attrEvent.Add(BrowsableAttribute.Yes); } } } }
public Com2PropertyBuilderUITypeEditor(Com2PropertyDescriptor pd, string guidString, VSSDK.CTLBLDTYPE type, UITypeEditor baseEditor) : base(baseEditor) { propDesc = pd; this.guidString = guidString; bldrType = type; }