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
- ToolboxItemAttribute.cs
- MetadataItem.cs
- PathStreamGeometryContext.cs
- PropertyFilterAttribute.cs
- CustomValidator.cs
- SynchronizedInputHelper.cs
- DefaultCommandExtensionCallback.cs
- TreeSet.cs
- RuleSettings.cs
- RIPEMD160Managed.cs
- LineVisual.cs
- CatalogPart.cs
- TraceSection.cs
- MutexSecurity.cs
- DrawingContextWalker.cs
- DiagnosticStrings.cs
- CrossSiteScriptingValidation.cs
- SafeFindHandle.cs
- ApplicationDirectory.cs
- Menu.cs
- RelatedView.cs
- EncryptedHeader.cs
- Rfc2898DeriveBytes.cs
- FormsAuthenticationEventArgs.cs
- webbrowsersite.cs
- StackOverflowException.cs
- AddDataControlFieldDialog.cs
- MenuAdapter.cs
- TraceShell.cs
- PostBackOptions.cs
- TextSelectionProcessor.cs
- Module.cs
- VariableQuery.cs
- CompositeScriptReferenceEventArgs.cs
- ProfileServiceManager.cs
- DocumentViewerBase.cs
- TextSimpleMarkerProperties.cs
- HtmlImage.cs
- TextChangedEventArgs.cs
- ListBase.cs
- ZoneButton.cs
- XmlSchemaCompilationSettings.cs
- SvcMapFileLoader.cs
- AtomServiceDocumentSerializer.cs
- AttributeUsageAttribute.cs
- X509Chain.cs
- TextViewDesigner.cs
- WindowsTokenRoleProvider.cs
- SoapProtocolImporter.cs
- SHA384Managed.cs
- securitycriticaldata.cs
- DataGridLinkButton.cs
- PersonalizationProvider.cs
- EncoderFallback.cs
- ObjectDisposedException.cs
- RtfToXamlLexer.cs
- ParameterBuilder.cs
- FormsAuthenticationConfiguration.cs
- EntityViewGenerator.cs
- TextTreeInsertElementUndoUnit.cs
- MethodImplAttribute.cs
- CodeRemoveEventStatement.cs
- DesignerAttribute.cs
- FilteredDataSetHelper.cs
- SID.cs
- DataGridAddNewRow.cs
- MsmqChannelFactory.cs
- FocusTracker.cs
- ExpressionBindings.cs
- StopStoryboard.cs
- HtmlHead.cs
- BamlMapTable.cs
- CleanUpVirtualizedItemEventArgs.cs
- SqlDataSource.cs
- httpserverutility.cs
- GB18030Encoding.cs
- XmlNavigatorStack.cs
- infer.cs
- ISFClipboardData.cs
- ContextStaticAttribute.cs
- GenericRootAutomationPeer.cs
- ObjectTypeMapping.cs
- NamespaceListProperty.cs
- SchemaSetCompiler.cs
- SecurityDocument.cs
- DataTemplateSelector.cs
- SafeFileMapViewHandle.cs
- ServiceRouteHandler.cs
- MetadataItem_Static.cs
- ArrangedElement.cs
- RawUIStateInputReport.cs
- WasNotInstalledException.cs
- XmlHierarchyData.cs
- PolicyLevel.cs
- PartialTrustHelpers.cs
- ResourceDisplayNameAttribute.cs
- GeometryModel3D.cs
- XmlILStorageConverter.cs
- TripleDES.cs
- Base64Decoder.cs