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
- StrongNameKeyPair.cs
- ExtendedPropertyCollection.cs
- DataGridCellEditEndingEventArgs.cs
- ContextTokenTypeConverter.cs
- InputReportEventArgs.cs
- StrokeNodeOperations.cs
- UnionCqlBlock.cs
- Thumb.cs
- DesignerForm.cs
- SplitContainer.cs
- ConnectorMovedEventArgs.cs
- PassportAuthenticationEventArgs.cs
- StandardRuntimeEnumValidatorAttribute.cs
- ConfigXmlComment.cs
- Thumb.cs
- ToolStripSeparator.cs
- GeneratedView.cs
- BitmapEffectDrawingContextWalker.cs
- StringResourceManager.cs
- DataColumnMappingCollection.cs
- ContextMenuStrip.cs
- TabControlDesigner.cs
- ServicePointManager.cs
- codemethodreferenceexpression.cs
- EnumValAlphaComparer.cs
- Char.cs
- GraphicsPathIterator.cs
- ProcessHostFactoryHelper.cs
- SerializationEventsCache.cs
- Imaging.cs
- InheritanceService.cs
- ToolstripProfessionalRenderer.cs
- CodeChecksumPragma.cs
- ToolStripInSituService.cs
- ErrorProvider.cs
- NullReferenceException.cs
- WebCategoryAttribute.cs
- InOutArgument.cs
- ScriptResourceDefinition.cs
- Model3DGroup.cs
- TemplateColumn.cs
- DoubleLinkListEnumerator.cs
- BackStopAuthenticationModule.cs
- SQLSingle.cs
- ControlUtil.cs
- Native.cs
- PageRequestManager.cs
- RijndaelManagedTransform.cs
- OdbcConnectionFactory.cs
- ValuePattern.cs
- MsmqAppDomainProtocolHandler.cs
- TextAutomationPeer.cs
- Vector3D.cs
- KnownTypes.cs
- VisualCollection.cs
- PeerApplicationLaunchInfo.cs
- ProofTokenCryptoHandle.cs
- DirtyTextRange.cs
- WorkflowTransactionService.cs
- BulletedListDesigner.cs
- TimeSpanMinutesConverter.cs
- BinaryMessageEncodingElement.cs
- XPathAxisIterator.cs
- HealthMonitoringSectionHelper.cs
- SoapSchemaImporter.cs
- DesignerDataTable.cs
- LowerCaseStringConverter.cs
- Menu.cs
- DataObjectFieldAttribute.cs
- XPathNavigatorReader.cs
- TreeNode.cs
- SslStream.cs
- OutOfProcStateClientManager.cs
- ToolBarDesigner.cs
- StringFunctions.cs
- ControlBindingsCollection.cs
- AstNode.cs
- CompressionTransform.cs
- FileNotFoundException.cs
- BulletedListDesigner.cs
- MonitorWrapper.cs
- InternalUserCancelledException.cs
- ListenerConnectionModeReader.cs
- indexingfiltermarshaler.cs
- FormClosingEvent.cs
- SqlCacheDependencyDatabase.cs
- XsltException.cs
- SystemIcons.cs
- AssociationTypeEmitter.cs
- ValueTypeFieldReference.cs
- StorageRoot.cs
- HttpProfileGroupBase.cs
- StatusBarDrawItemEvent.cs
- WmpBitmapEncoder.cs
- StylusDevice.cs
- XmlTextReader.cs
- CompressEmulationStream.cs
- EventLogPermissionEntryCollection.cs
- ComponentDispatcher.cs
- AmbientEnvironment.cs