Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / WinForms / Managed / System / WinForms / ComponentModel / COM2Interop / COM2PropertyBuilderUITypeEditor.cs / 1 / 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
- WizardStepBase.cs
- CreateUserWizard.cs
- ElementNotAvailableException.cs
- RectangleF.cs
- TransformPatternIdentifiers.cs
- X509Utils.cs
- ActivityExecutionContext.cs
- HyperLink.cs
- RSAOAEPKeyExchangeFormatter.cs
- SequentialOutput.cs
- ControlBuilderAttribute.cs
- CodeNamespaceImport.cs
- XmlNamespaceMapping.cs
- CreateBookmarkScope.cs
- ProtocolsConfigurationHandler.cs
- WebServiceData.cs
- MaskedTextBox.cs
- StatusInfoItem.cs
- ConfigDefinitionUpdates.cs
- NullRuntimeConfig.cs
- EventManager.cs
- ConnectionPointCookie.cs
- TagPrefixCollection.cs
- FtpRequestCacheValidator.cs
- MetadataSerializer.cs
- ButtonFieldBase.cs
- XmlUtil.cs
- WebContext.cs
- EnvironmentPermission.cs
- IResourceProvider.cs
- SessionIDManager.cs
- KeyMatchBuilder.cs
- EntityStoreSchemaGenerator.cs
- CodeTypeOfExpression.cs
- ResourceDescriptionAttribute.cs
- BounceEase.cs
- WebControlsSection.cs
- ProxyAttribute.cs
- LinqDataSourceContextEventArgs.cs
- SqlProviderManifest.cs
- XmlSchemaExporter.cs
- LocationSectionRecord.cs
- FormCollection.cs
- DataView.cs
- ServiceControllerDesigner.cs
- TextRenderer.cs
- WindowsScroll.cs
- LazyTextWriterCreator.cs
- CmsInterop.cs
- SoapTypeAttribute.cs
- LocationUpdates.cs
- CompiledAction.cs
- SqlCachedBuffer.cs
- PartitionerQueryOperator.cs
- RuntimeResourceSet.cs
- SequenceQuery.cs
- InternalBufferManager.cs
- GregorianCalendar.cs
- BitmapCodecInfoInternal.cs
- CustomAttributeSerializer.cs
- EventLogPermissionAttribute.cs
- SafeUserTokenHandle.cs
- ClrProviderManifest.cs
- ImageBrush.cs
- Accessible.cs
- ServiceOperation.cs
- EnlistmentState.cs
- TextBoxBase.cs
- SqlLiftWhereClauses.cs
- XPathItem.cs
- RemotingException.cs
- ControllableStoryboardAction.cs
- NumberSubstitution.cs
- SchemaDeclBase.cs
- SchemaObjectWriter.cs
- AuthenticateEventArgs.cs
- GridViewActionList.cs
- ServicePointManagerElement.cs
- CollaborationHelperFunctions.cs
- SchemaNamespaceManager.cs
- RadioButton.cs
- DataListCommandEventArgs.cs
- validation.cs
- WebRequestModuleElementCollection.cs
- TemplateEditingFrame.cs
- TextStore.cs
- QilFunction.cs
- ChannelPoolSettingsElement.cs
- AuthenticationService.cs
- ServiceDebugBehavior.cs
- XmlSchemaAnnotated.cs
- WindowsFormsSectionHandler.cs
- MethodCallTranslator.cs
- TextEditorParagraphs.cs
- GridViewCellAutomationPeer.cs
- QilSortKey.cs
- XAMLParseException.cs
- NetworkInformationPermission.cs
- CodeStatement.cs
- IndicFontClient.cs