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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TransformerInfoCollection.cs
- AccessDataSourceDesigner.cs
- CurrentChangingEventManager.cs
- EdmProviderManifest.cs
- IPEndPoint.cs
- StylusLogic.cs
- PlanCompilerUtil.cs
- MeshGeometry3D.cs
- StyleXamlParser.cs
- EntityDataSourceView.cs
- VectorAnimation.cs
- ListViewGroupCollectionEditor.cs
- HasActivatableWorkflowEvent.cs
- DeploymentSectionCache.cs
- ToolStripRendererSwitcher.cs
- ScriptingJsonSerializationSection.cs
- ProgressPage.cs
- DiscoveryClientElement.cs
- WindowsServiceCredential.cs
- FragmentNavigationEventArgs.cs
- StylusCollection.cs
- AppliedDeviceFiltersDialog.cs
- GridItem.cs
- SkinIDTypeConverter.cs
- NotCondition.cs
- DefaultAsyncDataDispatcher.cs
- _RequestCacheProtocol.cs
- TemplateField.cs
- PowerStatus.cs
- TextPointerBase.cs
- VectorCollection.cs
- NotificationContext.cs
- ReadOnlyDataSourceView.cs
- ZipPackagePart.cs
- FileLoadException.cs
- StringOutput.cs
- CrossSiteScriptingValidation.cs
- DataGridViewButtonColumn.cs
- DirectoryGroupQuery.cs
- x509utils.cs
- MsmqIntegrationReceiveParameters.cs
- WebPartCloseVerb.cs
- TemplateApplicationHelper.cs
- ResXResourceWriter.cs
- WebPartCollection.cs
- ControlType.cs
- Trace.cs
- ToolStripArrowRenderEventArgs.cs
- XsltException.cs
- KeysConverter.cs
- BitmapEffectRenderDataResource.cs
- DbDataSourceEnumerator.cs
- WebUtil.cs
- DataService.cs
- IntegerFacetDescriptionElement.cs
- ChildTable.cs
- mediaeventargs.cs
- ResumeStoryboard.cs
- TypeConverter.cs
- ListControlConvertEventArgs.cs
- SmtpFailedRecipientsException.cs
- ViewGenerator.cs
- FutureFactory.cs
- WebServiceHost.cs
- ContentPlaceHolder.cs
- UIElementIsland.cs
- DataGridAddNewRow.cs
- TagMapInfo.cs
- DATA_BLOB.cs
- Context.cs
- SymLanguageVendor.cs
- DtrList.cs
- FontDifferentiator.cs
- CreateUserErrorEventArgs.cs
- InputEventArgs.cs
- HMACMD5.cs
- XmlElementCollection.cs
- RowParagraph.cs
- ForceCopyBuildProvider.cs
- HybridObjectCache.cs
- MarkupCompilePass1.cs
- QilChoice.cs
- ActivityXRefPropertyEditor.cs
- UriTemplateDispatchFormatter.cs
- OutputCacheProviderCollection.cs
- OdbcConnectionFactory.cs
- EntityDataSourceContextCreatingEventArgs.cs
- Keywords.cs
- UnsafeNativeMethods.cs
- HttpWebResponse.cs
- IArgumentProvider.cs
- ResourcesGenerator.cs
- Rotation3DAnimationBase.cs
- DataSourceControl.cs
- StylusEventArgs.cs
- ProxyWebPartManager.cs
- DataRowCollection.cs
- TextRangeEdit.cs
- TextServicesProperty.cs
- _BufferOffsetSize.cs