Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / WinForms / Managed / System / WinForms / ComponentModel / COM2Interop / COM2IProvidePropertyBuilderHandler.cs / 1 / 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
- WsdlHelpGeneratorElement.cs
- BaseConfigurationRecord.cs
- Style.cs
- Unit.cs
- VectorValueSerializer.cs
- X509ServiceCertificateAuthentication.cs
- TextServicesHost.cs
- UriExt.cs
- ToolStripProgressBar.cs
- ButtonBase.cs
- DataObjectMethodAttribute.cs
- ClientFormsIdentity.cs
- EntityWrapperFactory.cs
- DoubleAverageAggregationOperator.cs
- CngKeyCreationParameters.cs
- Timer.cs
- SqlEnums.cs
- EventLogPermissionEntryCollection.cs
- Stacktrace.cs
- DependentList.cs
- Inflater.cs
- MasterPage.cs
- IBuiltInEvidence.cs
- Group.cs
- Int32KeyFrameCollection.cs
- FixedPage.cs
- Math.cs
- ResourceDescriptionAttribute.cs
- Comparer.cs
- ColorContextHelper.cs
- CommandID.cs
- GPStream.cs
- ChooseAction.cs
- XmlStreamNodeWriter.cs
- StringPropertyBuilder.cs
- Converter.cs
- FrameworkElementAutomationPeer.cs
- PersonalizationEntry.cs
- PointLight.cs
- CachedBitmap.cs
- ReturnType.cs
- SchemaTypeEmitter.cs
- RSACryptoServiceProvider.cs
- userdatakeys.cs
- EntityKey.cs
- EntityDataSourceQueryBuilder.cs
- DESCryptoServiceProvider.cs
- XsltInput.cs
- WebCategoryAttribute.cs
- OdbcCommand.cs
- CommentEmitter.cs
- XmlILTrace.cs
- BasicKeyConstraint.cs
- StateWorkerRequest.cs
- Package.cs
- SetStoryboardSpeedRatio.cs
- ProcessProtocolHandler.cs
- WebException.cs
- ActiveDocumentEvent.cs
- ParenExpr.cs
- Context.cs
- MarginCollapsingState.cs
- InstanceView.cs
- ContractCodeDomInfo.cs
- TrackingParameters.cs
- ResourcePool.cs
- SystemKeyConverter.cs
- SqlTrackingQuery.cs
- AsmxEndpointPickerExtension.cs
- Italic.cs
- Task.cs
- EventSource.cs
- InputBinder.cs
- Int16.cs
- behaviorssection.cs
- MsmqElementBase.cs
- ZipPackagePart.cs
- KeyFrames.cs
- InputEventArgs.cs
- ServiceInfo.cs
- CursorConverter.cs
- _BasicClient.cs
- DbProviderSpecificTypePropertyAttribute.cs
- RectKeyFrameCollection.cs
- WebPartHelpVerb.cs
- Certificate.cs
- RequestQueue.cs
- ClientRolePrincipal.cs
- FileAuthorizationModule.cs
- DataTransferEventArgs.cs
- TypedElement.cs
- ErrorProvider.cs
- WindowsListViewGroup.cs
- ResourceDescriptionAttribute.cs
- oledbmetadatacollectionnames.cs
- HttpHandlersSection.cs
- RegistryPermission.cs
- GrammarBuilderDictation.cs
- WebPartVerbsEventArgs.cs
- EntityTypeBase.cs