Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / ComponentModel / COM2Interop / COM2IProvidePropertyBuilderHandler.cs / 1305376 / COM2IProvidePropertyBuilderHandler.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.ComponentModel.Com2Interop { using System.ComponentModel; using System.Diagnostics; using System; using System.Collections; using Microsoft.Win32; using System.Drawing.Design; [System.Security.SuppressUnmanagedCodeSecurityAttribute()] internal class Com2IProvidePropertyBuilderHandler : Com2ExtendedBrowsingHandler { public override Type Interface { get { return typeof(NativeMethods.IProvidePropertyBuilder); } } private bool GetBuilderGuidString(NativeMethods.IProvidePropertyBuilder target, int dispid, ref string strGuidBldr, int[] bldrType) { bool valid = false; string[] pGuidBldr = new string[1]; if (NativeMethods.Failed(target.MapPropertyToBuilder(dispid, bldrType, pGuidBldr, ref valid))) { valid = false; } if (valid && (bldrType[0] & _CTLBLDTYPE.CTLBLDTYPE_FINTERNALBUILDER) == 0) { valid = false; Debug.Fail("Property Browser doesn't support standard builders -- NYI"); } if (!valid) { return false; } if (pGuidBldr[0] == null) { strGuidBldr = Guid.Empty.ToString(); } else { strGuidBldr = pGuidBldr[0]; } return true; } public override void SetupPropertyHandlers(Com2PropertyDescriptor[] propDesc) { if (propDesc == null) { return; } for (int i = 0; i < propDesc.Length; i++) { propDesc[i].QueryGetBaseAttributes += new GetAttributesEventHandler(this.OnGetBaseAttributes); propDesc[i].QueryGetTypeConverterAndTypeEditor += new GetTypeConverterAndTypeEditorEventHandler(this.OnGetTypeConverterAndTypeEditor); } } ////// /// Here is where we handle IVsPerPropertyBrowsing.GetLocalizedPropertyInfo and IVsPerPropertyBrowsing. HideProperty /// such as IPerPropertyBrowsing, IProvidePropertyBuilder, etc. /// private void OnGetBaseAttributes(Com2PropertyDescriptor sender, GetAttributesEvent attrEvent) { NativeMethods.IProvidePropertyBuilder target = sender.TargetObject as NativeMethods.IProvidePropertyBuilder; if (target != null ) { string s = null; bool builderValid = GetBuilderGuidString(target, sender.DISPID, ref s, new int[1]); // we hide IDispatch props by default, we we need to force showing them here if (sender.CanShow && builderValid) { if (typeof(UnsafeNativeMethods.IDispatch).IsAssignableFrom(sender.PropertyType)) { attrEvent.Add(BrowsableAttribute.Yes); } } } } private void OnGetTypeConverterAndTypeEditor(Com2PropertyDescriptor sender, GetTypeConverterAndTypeEditorEvent gveevent) { object target = sender.TargetObject; if (target is NativeMethods.IProvidePropertyBuilder) { NativeMethods.IProvidePropertyBuilder propBuilder = (NativeMethods.IProvidePropertyBuilder)target; int[] pctlBldType = new int[1]; string guidString = null; if (GetBuilderGuidString(propBuilder, sender.DISPID, ref guidString, pctlBldType)) { gveevent.TypeEditor = new Com2PropertyBuilderUITypeEditor(sender, guidString, pctlBldType[0], (UITypeEditor)gveevent.TypeEditor); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.ComponentModel.Com2Interop { using System.ComponentModel; using System.Diagnostics; using System; using System.Collections; using Microsoft.Win32; using System.Drawing.Design; [System.Security.SuppressUnmanagedCodeSecurityAttribute()] internal class Com2IProvidePropertyBuilderHandler : Com2ExtendedBrowsingHandler { public override Type Interface { get { return typeof(NativeMethods.IProvidePropertyBuilder); } } private bool GetBuilderGuidString(NativeMethods.IProvidePropertyBuilder target, int dispid, ref string strGuidBldr, int[] bldrType) { bool valid = false; string[] pGuidBldr = new string[1]; if (NativeMethods.Failed(target.MapPropertyToBuilder(dispid, bldrType, pGuidBldr, ref valid))) { valid = false; } if (valid && (bldrType[0] & _CTLBLDTYPE.CTLBLDTYPE_FINTERNALBUILDER) == 0) { valid = false; Debug.Fail("Property Browser doesn't support standard builders -- NYI"); } if (!valid) { return false; } if (pGuidBldr[0] == null) { strGuidBldr = Guid.Empty.ToString(); } else { strGuidBldr = pGuidBldr[0]; } return true; } public override void SetupPropertyHandlers(Com2PropertyDescriptor[] propDesc) { if (propDesc == null) { return; } for (int i = 0; i < propDesc.Length; i++) { propDesc[i].QueryGetBaseAttributes += new GetAttributesEventHandler(this.OnGetBaseAttributes); propDesc[i].QueryGetTypeConverterAndTypeEditor += new GetTypeConverterAndTypeEditorEventHandler(this.OnGetTypeConverterAndTypeEditor); } } ////// /// Here is where we handle IVsPerPropertyBrowsing.GetLocalizedPropertyInfo and IVsPerPropertyBrowsing. HideProperty /// such as IPerPropertyBrowsing, IProvidePropertyBuilder, etc. /// private void OnGetBaseAttributes(Com2PropertyDescriptor sender, GetAttributesEvent attrEvent) { NativeMethods.IProvidePropertyBuilder target = sender.TargetObject as NativeMethods.IProvidePropertyBuilder; if (target != null ) { string s = null; bool builderValid = GetBuilderGuidString(target, sender.DISPID, ref s, new int[1]); // we hide IDispatch props by default, we we need to force showing them here if (sender.CanShow && builderValid) { if (typeof(UnsafeNativeMethods.IDispatch).IsAssignableFrom(sender.PropertyType)) { attrEvent.Add(BrowsableAttribute.Yes); } } } } private void OnGetTypeConverterAndTypeEditor(Com2PropertyDescriptor sender, GetTypeConverterAndTypeEditorEvent gveevent) { object target = sender.TargetObject; if (target is NativeMethods.IProvidePropertyBuilder) { NativeMethods.IProvidePropertyBuilder propBuilder = (NativeMethods.IProvidePropertyBuilder)target; int[] pctlBldType = new int[1]; string guidString = null; if (GetBuilderGuidString(propBuilder, sender.DISPID, ref guidString, pctlBldType)) { gveevent.TypeEditor = new Com2PropertyBuilderUITypeEditor(sender, guidString, pctlBldType[0], (UITypeEditor)gveevent.TypeEditor); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CompositionDesigner.cs
- LayoutExceptionEventArgs.cs
- ResourceReferenceExpressionConverter.cs
- DockPattern.cs
- TableSectionStyle.cs
- SchemaImporterExtensionsSection.cs
- CapabilitiesUse.cs
- SecurityVersion.cs
- Application.cs
- BaseCollection.cs
- GraphicsPathIterator.cs
- MLangCodePageEncoding.cs
- CollectionView.cs
- IntegerValidatorAttribute.cs
- LocationUpdates.cs
- PlanCompilerUtil.cs
- GetWorkflowTree.cs
- FirewallWrapper.cs
- WebControlsSection.cs
- ServiceBehaviorElement.cs
- GroupPartitionExpr.cs
- Aggregates.cs
- Calendar.cs
- OpenTypeCommon.cs
- TableRowCollection.cs
- thaishape.cs
- _Events.cs
- Calendar.cs
- SSmlParser.cs
- WebPartConnection.cs
- PriorityChain.cs
- RegexStringValidatorAttribute.cs
- ConfigXmlCDataSection.cs
- AmbientProperties.cs
- InputLanguageSource.cs
- ObjectDataSource.cs
- Function.cs
- WindowsStatusBar.cs
- ImageDrawing.cs
- ImageListUtils.cs
- ZoneMembershipCondition.cs
- ObjectDataSourceStatusEventArgs.cs
- MenuItemBindingCollection.cs
- WebEventCodes.cs
- FunctionImportMapping.cs
- PanningMessageFilter.cs
- __Filters.cs
- FixedLineResult.cs
- SessionStateContainer.cs
- PeerContact.cs
- BufferedGraphics.cs
- Vars.cs
- DataBoundControlHelper.cs
- RSAPKCS1KeyExchangeFormatter.cs
- HttpProfileGroupBase.cs
- UIElement.cs
- RowToParametersTransformer.cs
- DiscoveryEndpointValidator.cs
- TextDecorationCollectionConverter.cs
- EqualityComparer.cs
- WebPartZone.cs
- XmlQueryOutput.cs
- Tile.cs
- X509CertificateInitiatorClientCredential.cs
- PanelStyle.cs
- HtmlInputSubmit.cs
- FieldDescriptor.cs
- ExtractedStateEntry.cs
- CroppedBitmap.cs
- TypeConverterHelper.cs
- SrgsSemanticInterpretationTag.cs
- TypefaceCollection.cs
- FixedFlowMap.cs
- FileUpload.cs
- UIElement3D.cs
- DuplicateDetector.cs
- TrackPoint.cs
- validationstate.cs
- Figure.cs
- AtlasWeb.Designer.cs
- HttpListenerRequest.cs
- DataGridViewCellStyleConverter.cs
- X509CertificateStore.cs
- ChtmlTextWriter.cs
- DynamicMethod.cs
- Encoder.cs
- SchemaImporterExtensionElement.cs
- UnionExpr.cs
- Attribute.cs
- UrlAuthorizationModule.cs
- PersonalizablePropertyEntry.cs
- documentsequencetextcontainer.cs
- SplineKeyFrames.cs
- AnnotationService.cs
- ActivityValidationServices.cs
- cryptoapiTransform.cs
- DataGridViewCellStyle.cs
- SystemIPGlobalStatistics.cs
- TypeContext.cs
- BasicExpandProvider.cs