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
- SineEase.cs
- SchemaConstraints.cs
- PageParser.cs
- XmlSchemaComplexContentExtension.cs
- SoapFault.cs
- ObjectComplexPropertyMapping.cs
- RectAnimation.cs
- ClientCultureInfo.cs
- SessionStateUtil.cs
- MimeBasePart.cs
- PerformanceCounter.cs
- DataSetUtil.cs
- GZipDecoder.cs
- X509AsymmetricSecurityKey.cs
- MemoryResponseElement.cs
- MessageQueueException.cs
- VirtualizingPanel.cs
- AdapterUtil.cs
- PropertyDescriptorGridEntry.cs
- OracleParameter.cs
- PropertyGridCommands.cs
- Point.cs
- CodeArrayIndexerExpression.cs
- OSFeature.cs
- SqlTypesSchemaImporter.cs
- ModifyActivitiesPropertyDescriptor.cs
- ConstructorBuilder.cs
- CompilationSection.cs
- DataList.cs
- CancellationToken.cs
- DataBoundControlHelper.cs
- JournalNavigationScope.cs
- KoreanCalendar.cs
- wgx_sdk_version.cs
- VirtualDirectoryMappingCollection.cs
- CodePageEncoding.cs
- StatusBarDrawItemEvent.cs
- MDIControlStrip.cs
- WindowVisualStateTracker.cs
- PathGradientBrush.cs
- ResolveDuplexAsyncResult.cs
- FrameworkRichTextComposition.cs
- CustomErrorCollection.cs
- HtmlTernaryTree.cs
- TraceSource.cs
- UnsettableComboBox.cs
- ObjectIDGenerator.cs
- FreezableCollection.cs
- EllipticalNodeOperations.cs
- FatalException.cs
- PersonalizationState.cs
- AuthorizationRule.cs
- DotExpr.cs
- FixedHighlight.cs
- SecurityContextSecurityTokenAuthenticator.cs
- FixedTextView.cs
- MultipleFilterMatchesException.cs
- AmbiguousMatchException.cs
- ProvidersHelper.cs
- SqlRetyper.cs
- CharAnimationBase.cs
- InitializationEventAttribute.cs
- AssemblyAttributes.cs
- WinEventHandler.cs
- RSAOAEPKeyExchangeFormatter.cs
- CancellationHandlerDesigner.cs
- RightsManagementEncryptedStream.cs
- ValueConversionAttribute.cs
- SelectiveScrollingGrid.cs
- DNS.cs
- XmlCharacterData.cs
- WindowExtensionMethods.cs
- IndicCharClassifier.cs
- RecordBuilder.cs
- FixedSOMPageElement.cs
- TextEffectResolver.cs
- TextEditorDragDrop.cs
- FrameDimension.cs
- RIPEMD160Managed.cs
- UnsafePeerToPeerMethods.cs
- SessionStateModule.cs
- FakeModelPropertyImpl.cs
- XmlTypeMapping.cs
- SystemMulticastIPAddressInformation.cs
- XsdDateTime.cs
- DataObject.cs
- Propagator.cs
- InvalidComObjectException.cs
- DynamicRenderer.cs
- LinqDataSourceHelper.cs
- MachineKeyConverter.cs
- DbBuffer.cs
- DocumentPaginator.cs
- printdlgexmarshaler.cs
- HGlobalSafeHandle.cs
- Sql8ExpressionRewriter.cs
- SqlFactory.cs
- DataViewSettingCollection.cs
- UseAttributeSetsAction.cs
- PackWebRequest.cs