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
- NavigationHelper.cs
- AsyncPostBackTrigger.cs
- InvokeMemberBinder.cs
- FreezableOperations.cs
- WebServiceReceive.cs
- DesignerDataColumn.cs
- CopyOfAction.cs
- ResetableIterator.cs
- SecurityPermission.cs
- TemplatedMailWebEventProvider.cs
- XmlDataProvider.cs
- DataBindingHandlerAttribute.cs
- ImpersonateTokenRef.cs
- MaterialGroup.cs
- BufferBuilder.cs
- DocumentGridContextMenu.cs
- WorkflowServiceHostFactory.cs
- SqlProviderManifest.cs
- XmlDesigner.cs
- BufferBuilder.cs
- sqlser.cs
- WmiEventSink.cs
- ServiceModelConfigurationSectionGroup.cs
- SoapServerMethod.cs
- DoubleStorage.cs
- CustomTypeDescriptor.cs
- AssemblyNameProxy.cs
- StylusPointProperty.cs
- MessageQueuePermissionEntryCollection.cs
- MarkupExtensionReturnTypeAttribute.cs
- TypeInformation.cs
- LocatorBase.cs
- TransactionInterop.cs
- ServiceCredentialsElement.cs
- ButtonField.cs
- DataContractSerializerMessageContractImporter.cs
- NotImplementedException.cs
- ReadOnlyObservableCollection.cs
- UnionQueryOperator.cs
- WebZone.cs
- shaperfactoryquerycacheentry.cs
- EventLogPermissionEntryCollection.cs
- XmlWrappingWriter.cs
- TextRange.cs
- LineInfo.cs
- RtfFormatStack.cs
- DefinitionUpdate.cs
- SmiTypedGetterSetter.cs
- GridEntryCollection.cs
- ECDiffieHellmanCngPublicKey.cs
- ObjectViewListener.cs
- ScriptResourceAttribute.cs
- EntityTypeBase.cs
- DispatcherProcessingDisabled.cs
- DisplayMemberTemplateSelector.cs
- MatrixStack.cs
- Image.cs
- SqlConnection.cs
- SearchForVirtualItemEventArgs.cs
- EntityEntry.cs
- DataGridRow.cs
- DynamicValidator.cs
- RolePrincipal.cs
- PackWebResponse.cs
- PropertyEmitter.cs
- COM2PropertyPageUITypeConverter.cs
- WsatExtendedInformation.cs
- WorkerRequest.cs
- WorkflowRequestContext.cs
- HotSpotCollectionEditor.cs
- DetailsViewCommandEventArgs.cs
- ToolStripDropDownClosedEventArgs.cs
- CustomBindingElement.cs
- Oid.cs
- TransformProviderWrapper.cs
- MatrixKeyFrameCollection.cs
- AsymmetricKeyExchangeFormatter.cs
- TextServicesCompartment.cs
- Mutex.cs
- XmlSchemaGroup.cs
- TaskScheduler.cs
- UDPClient.cs
- CanExpandCollapseAllConverter.cs
- DecoderBestFitFallback.cs
- MsmqHostedTransportManager.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- ByteFacetDescriptionElement.cs
- LinearKeyFrames.cs
- XmlLanguage.cs
- DataGridViewCellPaintingEventArgs.cs
- DropShadowEffect.cs
- SqlDataSourceConnectionPanel.cs
- ResizeGrip.cs
- ScrollBar.cs
- EntityConnectionStringBuilderItem.cs
- SwitchElementsCollection.cs
- WindowsMenu.cs
- DbDeleteCommandTree.cs
- SequentialOutput.cs
- XsltContext.cs