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
- SerializationTrace.cs
- MailAddress.cs
- RunInstallerAttribute.cs
- Panel.cs
- AliasedSlot.cs
- ClientTargetCollection.cs
- FunctionNode.cs
- AttributeProviderAttribute.cs
- WCFModelStrings.Designer.cs
- WaitForChangedResult.cs
- TextTreeNode.cs
- LinkClickEvent.cs
- InvokeHandlers.cs
- SettingsPropertyNotFoundException.cs
- BadImageFormatException.cs
- PreviewPrintController.cs
- SQLInt16.cs
- RemoteWebConfigurationHostServer.cs
- ConfigurationStrings.cs
- CustomErrorCollection.cs
- PointAnimationUsingKeyFrames.cs
- CustomAssemblyResolver.cs
- SafeArrayTypeMismatchException.cs
- FormsAuthenticationUserCollection.cs
- FileUtil.cs
- XmlSortKey.cs
- RangeValuePattern.cs
- DiffuseMaterial.cs
- WebPartConnectVerb.cs
- EntityDataSourceEntitySetNameItem.cs
- DetailsViewUpdatedEventArgs.cs
- ApplicationTrust.cs
- RequestCache.cs
- Adorner.cs
- IisTraceListener.cs
- sitestring.cs
- CompilationUnit.cs
- StatusBarPanel.cs
- FormsAuthenticationModule.cs
- PeerNodeAddress.cs
- MetadataProperty.cs
- ConnectionManagementElementCollection.cs
- sortedlist.cs
- NonSerializedAttribute.cs
- SinglePhaseEnlistment.cs
- PageParserFilter.cs
- UIntPtr.cs
- CurrentChangingEventManager.cs
- SqlConnectionPoolGroupProviderInfo.cs
- AnimationClockResource.cs
- XsdDateTime.cs
- HandlerElementCollection.cs
- StatusBarItem.cs
- DurableEnlistmentState.cs
- WebBrowserDesigner.cs
- InheritedPropertyChangedEventArgs.cs
- LocalizabilityAttribute.cs
- _ListenerAsyncResult.cs
- ProcessManager.cs
- EventPropertyMap.cs
- EncoderParameters.cs
- EmbossBitmapEffect.cs
- InvalidAsynchronousStateException.cs
- userdatakeys.cs
- OletxResourceManager.cs
- GridErrorDlg.cs
- ObjectViewListener.cs
- CompilationUnit.cs
- XmlTextEncoder.cs
- SchemaImporter.cs
- BindingNavigator.cs
- ContourSegment.cs
- SafeFileMappingHandle.cs
- ItemCollection.cs
- XamlSerializerUtil.cs
- WorkflowIdleElement.cs
- LinqDataSourceDisposeEventArgs.cs
- IdentityModelDictionary.cs
- EmptyElement.cs
- XmlSerializationGeneratedCode.cs
- IPEndPoint.cs
- InstancePersistenceContext.cs
- SchemaElementLookUpTable.cs
- StorageBasedPackageProperties.cs
- Number.cs
- MultilineStringEditor.cs
- ReaderWriterLock.cs
- TextServicesCompartmentContext.cs
- TableStyle.cs
- IndependentAnimationStorage.cs
- MailWriter.cs
- HotSpot.cs
- Control.cs
- TextPointerBase.cs
- NullableIntMinMaxAggregationOperator.cs
- XmlEventCache.cs
- DragStartedEventArgs.cs
- RightsManagementEncryptedStream.cs
- SafeRegistryHandle.cs
- DataControlField.cs