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
- UserPreferenceChangingEventArgs.cs
- BufferedWebEventProvider.cs
- PropertyCondition.cs
- SetStoryboardSpeedRatio.cs
- JournalEntryStack.cs
- SqlVersion.cs
- FixedFindEngine.cs
- TypeHelpers.cs
- ApplicationHost.cs
- IncrementalHitTester.cs
- Visual3D.cs
- JumpItem.cs
- ColumnWidthChangingEvent.cs
- remotingproxy.cs
- HtmlEmptyTagControlBuilder.cs
- TimeSpanStorage.cs
- LogReservationCollection.cs
- ColorContextHelper.cs
- SecurityUtils.cs
- WebPartHelpVerb.cs
- SqlTopReducer.cs
- BindingSource.cs
- ProviderIncompatibleException.cs
- GeneralTransformGroup.cs
- WmlLinkAdapter.cs
- QueueProcessor.cs
- EventProviderWriter.cs
- PowerModeChangedEventArgs.cs
- SiteMapDataSourceView.cs
- HtmlInputReset.cs
- UpdateRecord.cs
- ExpandedWrapper.cs
- ToolStripSplitStackLayout.cs
- XmlEncoding.cs
- Compilation.cs
- Double.cs
- JsonStringDataContract.cs
- IisTraceListener.cs
- WebPartCloseVerb.cs
- EntityTypeEmitter.cs
- ObjectViewEntityCollectionData.cs
- _HTTPDateParse.cs
- ThumbButtonInfo.cs
- RadioButton.cs
- LocalizationParserHooks.cs
- CallbackHandler.cs
- WebBrowsableAttribute.cs
- ParameterRefs.cs
- XmlHelper.cs
- NavigationExpr.cs
- AnnotationService.cs
- WebPartRestoreVerb.cs
- ThreadAttributes.cs
- SystemKeyConverter.cs
- NullableFloatSumAggregationOperator.cs
- HtmlElement.cs
- DbRetry.cs
- QuerySetOp.cs
- ProcessInfo.cs
- RequestResizeEvent.cs
- ConnectionPoint.cs
- ComboBoxRenderer.cs
- SqlRetyper.cs
- SqlFacetAttribute.cs
- NameSpaceEvent.cs
- InfoCardHelper.cs
- CryptoHandle.cs
- ConnectionsZoneAutoFormat.cs
- RequestCache.cs
- XmlSerializerAssemblyAttribute.cs
- SoapIncludeAttribute.cs
- ChannelServices.cs
- DrawingContextDrawingContextWalker.cs
- Transform.cs
- SafeTimerHandle.cs
- HttpConfigurationSystem.cs
- BooleanConverter.cs
- DataGridViewImageCell.cs
- X509Certificate.cs
- ProxyFragment.cs
- GridPattern.cs
- TextReader.cs
- ExtendLockAsyncResult.cs
- ReflectEventDescriptor.cs
- EventSourceCreationData.cs
- SerialPort.cs
- CodePageEncoding.cs
- _BufferOffsetSize.cs
- ListBoxItem.cs
- SizeIndependentAnimationStorage.cs
- MimePart.cs
- ServiceElement.cs
- ProfilePropertyMetadata.cs
- SafeNativeMethods.cs
- Directory.cs
- ConditionalAttribute.cs
- CheckBoxDesigner.cs
- WindowAutomationPeer.cs
- BackStopAuthenticationModule.cs
- Image.cs