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
- XsdDuration.cs
- SortDescription.cs
- ByteAnimation.cs
- MimePart.cs
- InstanceStore.cs
- Point3DCollection.cs
- ColorMatrix.cs
- KeyBinding.cs
- Padding.cs
- DataGridViewTextBoxColumn.cs
- NestedContainer.cs
- RegexEditorDialog.cs
- Splitter.cs
- XmlSchemaProviderAttribute.cs
- AutomationElement.cs
- AppDomain.cs
- WebPartConnectionsCancelVerb.cs
- FrameDimension.cs
- AssemblyInfo.cs
- ConfigurationProperty.cs
- XmlUtf8RawTextWriter.cs
- securitycriticaldataClass.cs
- JsonStringDataContract.cs
- SocketElement.cs
- X509LogoTypeExtension.cs
- DataTrigger.cs
- MediaTimeline.cs
- QueryResponse.cs
- KeyConverter.cs
- AlgoModule.cs
- ChannelBinding.cs
- SymLanguageVendor.cs
- NullableConverter.cs
- StylusCollection.cs
- DataGridTableCollection.cs
- VisualTarget.cs
- AttributeCollection.cs
- FormsAuthenticationUserCollection.cs
- FieldTemplateUserControl.cs
- SubstitutionList.cs
- CultureNotFoundException.cs
- SelectionGlyph.cs
- ConfigXmlAttribute.cs
- DeploymentSection.cs
- TitleStyle.cs
- ConfigXmlWhitespace.cs
- DataServiceExpressionVisitor.cs
- ProcessModelInfo.cs
- DataGridViewIntLinkedList.cs
- WrapPanel.cs
- StringUtil.cs
- PreviewPrintController.cs
- SystemResourceKey.cs
- SystemEvents.cs
- ExpressionVisitor.cs
- ComEventsInfo.cs
- StreamReader.cs
- ToolbarAUtomationPeer.cs
- CreateDataSourceDialog.cs
- AdornerDecorator.cs
- BamlRecordReader.cs
- FileDialogCustomPlace.cs
- ConfigXmlAttribute.cs
- ActivationArguments.cs
- TempEnvironment.cs
- TextStore.cs
- LayeredChannelFactory.cs
- AddInEnvironment.cs
- CollaborationHelperFunctions.cs
- KoreanCalendar.cs
- TextAction.cs
- SelectionProviderWrapper.cs
- SpeakInfo.cs
- InputLangChangeEvent.cs
- MatrixConverter.cs
- CodeObject.cs
- DataGridViewCellStateChangedEventArgs.cs
- ObjectDisposedException.cs
- ComponentChangingEvent.cs
- NativeMethods.cs
- ParamArrayAttribute.cs
- SystemIPv6InterfaceProperties.cs
- ByteStream.cs
- FacetDescriptionElement.cs
- ExpressionLexer.cs
- ServiceProviders.cs
- WindowsListViewItem.cs
- DataObjectAttribute.cs
- LinearGradientBrush.cs
- Hex.cs
- SoapExtensionStream.cs
- MemberRelationshipService.cs
- SecurityTokenParameters.cs
- _NegoStream.cs
- FileDialogPermission.cs
- PersonalizableTypeEntry.cs
- latinshape.cs
- ProfileEventArgs.cs
- ToolboxItem.cs
- CompilationSection.cs