Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BitmapSizeOptions.cs
- XamlTreeBuilder.cs
- MediaScriptCommandRoutedEventArgs.cs
- DataGridViewRowPostPaintEventArgs.cs
- UnmanagedMemoryStream.cs
- SafeTimerHandle.cs
- FixedFlowMap.cs
- PermissionListSet.cs
- SqlExpressionNullability.cs
- BulletedList.cs
- QuaternionAnimationBase.cs
- WSHttpBindingElement.cs
- DocumentPageTextView.cs
- HashSet.cs
- QuotedStringFormatReader.cs
- NativeMethodsOther.cs
- UIPermission.cs
- MetaForeignKeyColumn.cs
- StrongTypingException.cs
- FieldNameLookup.cs
- StrokeNodeOperations.cs
- PartitionedDataSource.cs
- LinearGradientBrush.cs
- WebPartRestoreVerb.cs
- MouseGesture.cs
- BaseCAMarshaler.cs
- SymDocumentType.cs
- TileBrush.cs
- CannotUnloadAppDomainException.cs
- HtmlEmptyTagControlBuilder.cs
- XmlCodeExporter.cs
- ItemsPresenter.cs
- VirtualDirectoryMappingCollection.cs
- ClassHandlersStore.cs
- SmtpDateTime.cs
- XmlSerializationWriter.cs
- TextEffect.cs
- PageParser.cs
- ColumnHeader.cs
- Ref.cs
- XmlHierarchyData.cs
- TemplateNameScope.cs
- RestClientProxyHandler.cs
- DocumentViewerAutomationPeer.cs
- LocalizationComments.cs
- ToolStripPanelCell.cs
- IgnoreFlushAndCloseStream.cs
- QuaternionAnimation.cs
- AppSettingsReader.cs
- ErrorWebPart.cs
- SecUtil.cs
- MarginsConverter.cs
- CoreSwitches.cs
- UnhandledExceptionEventArgs.cs
- WSHttpBinding.cs
- SmiSettersStream.cs
- XPathExpr.cs
- BooleanExpr.cs
- DoubleStorage.cs
- EncodingTable.cs
- InternalControlCollection.cs
- ProtectedProviderSettings.cs
- SemaphoreFullException.cs
- WindowCollection.cs
- IndentedTextWriter.cs
- CFStream.cs
- UnsafeNativeMethods.cs
- XmlIgnoreAttribute.cs
- XsdSchemaFileEditor.cs
- ToolStripProgressBar.cs
- FormParameter.cs
- BasicBrowserDialog.designer.cs
- BasicHttpBindingElement.cs
- MouseEventArgs.cs
- IndicFontClient.cs
- XmlDesignerDataSourceView.cs
- StringWriter.cs
- ReferenceConverter.cs
- ProfileProvider.cs
- X509CertificateChain.cs
- HitTestParameters.cs
- Win32.cs
- XsltLoader.cs
- SmtpSection.cs
- HtmlInputReset.cs
- TextSpan.cs
- TemplateModeChangedEventArgs.cs
- UIElementCollection.cs
- XmlQueryContext.cs
- SqlTypesSchemaImporter.cs
- KnowledgeBase.cs
- FontFamilyIdentifier.cs
- Context.cs
- ComponentResourceKey.cs
- Executor.cs
- JsonGlobals.cs
- EnumerableRowCollectionExtensions.cs
- SmtpReplyReaderFactory.cs
- TrustManagerPromptUI.cs
- ClientEventManager.cs