Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / ComponentModel / COM2Interop / COM2PropertyBuilderUITypeEditor.cs / 1305376 / COM2PropertyBuilderUITypeEditor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.ComponentModel.Com2Interop { using Microsoft.Win32; using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System.Drawing; using System.Drawing.Design; using System.Runtime.InteropServices; using System.Windows.Forms.Design; using System.Globalization; ////// /// internal class Com2PropertyBuilderUITypeEditor : Com2ExtendedUITypeEditor { private Com2PropertyDescriptor propDesc; string guidString; int bldrType; public Com2PropertyBuilderUITypeEditor(Com2PropertyDescriptor pd, string guidString, int type, UITypeEditor baseEditor) : base(baseEditor) { propDesc = pd; this.guidString = guidString; this.bldrType = type; } ////// /// Takes the value returned from valueAccess.getValue() and modifies or replaces /// the value, passing the result into valueAccess.setValue(). This is where /// an editor can launch a modal dialog or create a drop down editor to allow /// the user to modify the value. Host assistance in presenting UI to the user /// can be found through the valueAccess.getService function. /// public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { IntPtr parentHandle = (IntPtr)UnsafeNativeMethods.GetFocus(); IUIService uiSvc = (IUIService)provider.GetService(typeof(IUIService)); if (uiSvc != null) { IWin32Window parent = uiSvc.GetDialogOwnerWindow(); if (parent != null) { parentHandle = parent.Handle; } } bool useValue = false; //VARIANT pValue = null; object pValue = value; try{ object obj = propDesc.TargetObject; if (obj is ICustomTypeDescriptor) { obj = ((ICustomTypeDescriptor)obj).GetPropertyOwner(propDesc); } Debug.Assert(obj is NativeMethods.IProvidePropertyBuilder, "object is not IProvidePropertyBuilder"); NativeMethods.IProvidePropertyBuilder propBuilder = (NativeMethods.IProvidePropertyBuilder)obj; if (NativeMethods.Failed(propBuilder.ExecuteBuilder(propDesc.DISPID, guidString, null, new HandleRef(null, parentHandle), ref pValue, ref useValue))){ useValue = false; } }catch(ExternalException ex) { Debug.Fail("Failed to show property frame: " + ex.ErrorCode.ToString(CultureInfo.InvariantCulture)); } if (useValue && (bldrType & _CTLBLDTYPE.CTLBLDTYPE_FEDITSOBJDIRECTLY) == 0){ return pValue;//pValue.ToVariant(); } return value; } ////// /// Retrieves the editing style of the Edit method. If the method /// is not supported, this will return None. /// public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { return UITypeEditorEditStyle.Modal; } } } // 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 Microsoft.Win32; using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System.Drawing; using System.Drawing.Design; using System.Runtime.InteropServices; using System.Windows.Forms.Design; using System.Globalization; ////// /// internal class Com2PropertyBuilderUITypeEditor : Com2ExtendedUITypeEditor { private Com2PropertyDescriptor propDesc; string guidString; int bldrType; public Com2PropertyBuilderUITypeEditor(Com2PropertyDescriptor pd, string guidString, int type, UITypeEditor baseEditor) : base(baseEditor) { propDesc = pd; this.guidString = guidString; this.bldrType = type; } ////// /// Takes the value returned from valueAccess.getValue() and modifies or replaces /// the value, passing the result into valueAccess.setValue(). This is where /// an editor can launch a modal dialog or create a drop down editor to allow /// the user to modify the value. Host assistance in presenting UI to the user /// can be found through the valueAccess.getService function. /// public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { IntPtr parentHandle = (IntPtr)UnsafeNativeMethods.GetFocus(); IUIService uiSvc = (IUIService)provider.GetService(typeof(IUIService)); if (uiSvc != null) { IWin32Window parent = uiSvc.GetDialogOwnerWindow(); if (parent != null) { parentHandle = parent.Handle; } } bool useValue = false; //VARIANT pValue = null; object pValue = value; try{ object obj = propDesc.TargetObject; if (obj is ICustomTypeDescriptor) { obj = ((ICustomTypeDescriptor)obj).GetPropertyOwner(propDesc); } Debug.Assert(obj is NativeMethods.IProvidePropertyBuilder, "object is not IProvidePropertyBuilder"); NativeMethods.IProvidePropertyBuilder propBuilder = (NativeMethods.IProvidePropertyBuilder)obj; if (NativeMethods.Failed(propBuilder.ExecuteBuilder(propDesc.DISPID, guidString, null, new HandleRef(null, parentHandle), ref pValue, ref useValue))){ useValue = false; } }catch(ExternalException ex) { Debug.Fail("Failed to show property frame: " + ex.ErrorCode.ToString(CultureInfo.InvariantCulture)); } if (useValue && (bldrType & _CTLBLDTYPE.CTLBLDTYPE_FEDITSOBJDIRECTLY) == 0){ return pValue;//pValue.ToVariant(); } return value; } ////// /// Retrieves the editing style of the Edit method. If the method /// is not supported, this will return None. /// public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { return UITypeEditorEditStyle.Modal; } } } // 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
- SqlHelper.cs
- XsltInput.cs
- PrimitiveXmlSerializers.cs
- SqlCachedBuffer.cs
- ResumeStoryboard.cs
- SqlBuffer.cs
- XPathMessageFilterTable.cs
- TypeConstant.cs
- CanExecuteRoutedEventArgs.cs
- Row.cs
- PlanCompiler.cs
- Calendar.cs
- DoubleCollection.cs
- RepeaterItem.cs
- TypeBuilder.cs
- CharacterHit.cs
- TextParagraphCache.cs
- ConnectivityStatus.cs
- _Connection.cs
- UrlPath.cs
- PrePostDescendentsWalker.cs
- GCHandleCookieTable.cs
- ProfilePropertyNameValidator.cs
- loginstatus.cs
- ColumnPropertiesGroup.cs
- MainMenu.cs
- WinEventTracker.cs
- CatalogPartCollection.cs
- MarshalByValueComponent.cs
- WebPartPersonalization.cs
- BamlVersionHeader.cs
- RuleInfoComparer.cs
- ErrorFormatterPage.cs
- ConnectionPointGlyph.cs
- AuthenticationService.cs
- SqlDataSourceStatusEventArgs.cs
- __TransparentProxy.cs
- CommonGetThemePartSize.cs
- CompiledXpathExpr.cs
- PagerSettings.cs
- validation.cs
- OptionUsage.cs
- NestedContainer.cs
- mediaeventshelper.cs
- TextTreeTextBlock.cs
- ReplyChannelBinder.cs
- WebPartRestoreVerb.cs
- StateMachineAction.cs
- EntityProviderServices.cs
- RequestUriProcessor.cs
- X509WindowsSecurityToken.cs
- PanelStyle.cs
- HtmlPhoneCallAdapter.cs
- InfoCardPolicy.cs
- ConditionCollection.cs
- LogLogRecord.cs
- RegularExpressionValidator.cs
- HttpConfigurationContext.cs
- SQLConvert.cs
- Parallel.cs
- TcpClientSocketManager.cs
- TableParaClient.cs
- LogicalExpressionTypeConverter.cs
- CustomErrorCollection.cs
- WrappedIUnknown.cs
- StickyNoteAnnotations.cs
- CommandLineParser.cs
- XmlAnyAttributeAttribute.cs
- SharedHttpTransportManager.cs
- BitmapEffectDrawingContextWalker.cs
- ModelUIElement3D.cs
- FontStretchConverter.cs
- ActivityTypeDesigner.xaml.cs
- SqlInternalConnection.cs
- MultilineStringEditor.cs
- PersistenceTypeAttribute.cs
- BidOverLoads.cs
- WarningException.cs
- ExpressionList.cs
- AvTraceFormat.cs
- SetIterators.cs
- NodeLabelEditEvent.cs
- Rules.cs
- FastEncoderWindow.cs
- ServerType.cs
- XmlDataSource.cs
- XmlHelper.cs
- MasterPageCodeDomTreeGenerator.cs
- AlignmentYValidation.cs
- EnumerableRowCollectionExtensions.cs
- PropertyDescriptorComparer.cs
- ConfigXmlWhitespace.cs
- MimeFormatExtensions.cs
- TextTabProperties.cs
- NavigationExpr.cs
- NavigationWindowAutomationPeer.cs
- ScrollableControl.cs
- ValidatorCompatibilityHelper.cs
- ClientApiGenerator.cs
- ToolStripProgressBar.cs