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
- ValueSerializer.cs
- XDRSchema.cs
- PropertyRecord.cs
- ControlPaint.cs
- PointValueSerializer.cs
- ZipIOLocalFileBlock.cs
- CompilerGeneratedAttribute.cs
- SelectionRange.cs
- WebDisplayNameAttribute.cs
- CodeDelegateCreateExpression.cs
- SystemInformation.cs
- SmtpNetworkElement.cs
- SectionInformation.cs
- TypeExtensionSerializer.cs
- CircleHotSpot.cs
- DrawingCollection.cs
- NavigationFailedEventArgs.cs
- OutKeywords.cs
- XPathScanner.cs
- NegotiateStream.cs
- StringArrayConverter.cs
- EntityConnection.cs
- BuildResult.cs
- HelpKeywordAttribute.cs
- PreProcessor.cs
- OdbcUtils.cs
- DependencyPropertyChangedEventArgs.cs
- TreeBuilderXamlTranslator.cs
- RoleGroupCollection.cs
- PeerApplication.cs
- TextTreeTextElementNode.cs
- EventLogInternal.cs
- WorkflowDebuggerSteppingAttribute.cs
- BaseValidator.cs
- DbConnectionHelper.cs
- BrowserCapabilitiesFactoryBase.cs
- FileDialogPermission.cs
- CallbackHandler.cs
- KeyValuePair.cs
- SchemaImporter.cs
- DSASignatureFormatter.cs
- TemplateBuilder.cs
- ELinqQueryState.cs
- DllNotFoundException.cs
- ColumnTypeConverter.cs
- StaticSiteMapProvider.cs
- Catch.cs
- UTF8Encoding.cs
- EventDriven.cs
- ADConnectionHelper.cs
- BamlResourceContent.cs
- WebPartMinimizeVerb.cs
- ReadOnlyDataSource.cs
- KeyBinding.cs
- DetailsViewPagerRow.cs
- WpfKnownType.cs
- XmlDataDocument.cs
- CompositeKey.cs
- TrackBarDesigner.cs
- PtsContext.cs
- FunctionDescription.cs
- EventRouteFactory.cs
- ContentValidator.cs
- PnrpPermission.cs
- DuplexChannelBinder.cs
- MatcherBuilder.cs
- Renderer.cs
- BinaryObjectReader.cs
- _ProxyChain.cs
- ITextView.cs
- BitmapMetadataBlob.cs
- TreeViewCancelEvent.cs
- MenuTracker.cs
- UriTemplatePathSegment.cs
- WindowPattern.cs
- ListViewDataItem.cs
- RSAOAEPKeyExchangeFormatter.cs
- IndentedTextWriter.cs
- InputScope.cs
- TableRow.cs
- SrgsText.cs
- BuildManagerHost.cs
- HierarchicalDataBoundControlAdapter.cs
- TerminatorSinks.cs
- WebPartConnectionsEventArgs.cs
- SplineQuaternionKeyFrame.cs
- SQLByte.cs
- CommandID.cs
- WebPartUserCapability.cs
- OleDbException.cs
- TransactionsSectionGroup.cs
- SelectionUIHandler.cs
- RectKeyFrameCollection.cs
- FormViewPagerRow.cs
- DefaultTextStoreTextComposition.cs
- ButtonBaseAdapter.cs
- FileUtil.cs
- ValidationPropertyAttribute.cs
- XPathNavigatorReader.cs
- SecurityRuntime.cs