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
- FormViewInsertedEventArgs.cs
- TextRunTypographyProperties.cs
- NameValueSectionHandler.cs
- Encoding.cs
- MulticastDelegate.cs
- EventArgs.cs
- XmlSchemaValidationException.cs
- ExpressionLink.cs
- ReadOnlyObservableCollection.cs
- OperationCanceledException.cs
- DesignColumn.cs
- ArgumentValue.cs
- TextDecorationCollection.cs
- FontInfo.cs
- FrameworkContentElement.cs
- RangeValidator.cs
- CodeTypeReferenceExpression.cs
- EntityDataSourceChangedEventArgs.cs
- XmlAttributeAttribute.cs
- SetterTriggerConditionValueConverter.cs
- Registry.cs
- ExceptQueryOperator.cs
- IDataContractSurrogate.cs
- dtdvalidator.cs
- XmlElement.cs
- SchemaImporterExtension.cs
- ResourceSet.cs
- BinaryConverter.cs
- PenThreadPool.cs
- ObjectDataSourceMethodEventArgs.cs
- IdentitySection.cs
- PrintDocument.cs
- XPathScanner.cs
- Rethrow.cs
- BindableAttribute.cs
- Ops.cs
- SqlDataSourceCustomCommandEditor.cs
- SafeSecurityHelper.cs
- WebPartMenuStyle.cs
- HMACSHA1.cs
- MouseButton.cs
- SpnegoTokenProvider.cs
- BinaryNode.cs
- DateTimeUtil.cs
- WebPartConnectionCollection.cs
- MimePart.cs
- NativeMethods.cs
- AttachedAnnotationChangedEventArgs.cs
- RuleSettingsCollection.cs
- BrowserInteropHelper.cs
- GradientBrush.cs
- SynchronizedDispatch.cs
- Set.cs
- ProxyAttribute.cs
- WebBrowserContainer.cs
- TypeListConverter.cs
- XPathDocument.cs
- AnonymousIdentificationModule.cs
- WebPartDisplayModeCancelEventArgs.cs
- ClientConfigurationHost.cs
- SkewTransform.cs
- SystemKeyConverter.cs
- WebPartActionVerb.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- SoapException.cs
- ResolveNextArgumentWorkItem.cs
- UshortList2.cs
- TypeDescriptionProviderAttribute.cs
- FunctionNode.cs
- ObjectStateManagerMetadata.cs
- EventWaitHandleSecurity.cs
- UITypeEditor.cs
- Pkcs7Signer.cs
- StreamResourceInfo.cs
- CompositeCollectionView.cs
- TryLoadRunnableWorkflowCommand.cs
- ReachDocumentSequenceSerializerAsync.cs
- XmlObjectSerializerWriteContext.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- MethodImplAttribute.cs
- OleDbFactory.cs
- ApplicationServiceManager.cs
- XmlNamespaceDeclarationsAttribute.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- Line.cs
- ScrollPattern.cs
- nulltextcontainer.cs
- DesignTimeParseData.cs
- TypeDescriptor.cs
- WebConfigurationHostFileChange.cs
- DnsPermission.cs
- PerformanceCounterCategory.cs
- DrawingCollection.cs
- DbTransaction.cs
- NamespaceEmitter.cs
- CustomAssemblyResolver.cs
- HotSpot.cs
- GridViewCellAutomationPeer.cs
- ModelPerspective.cs
- DataGridGeneralPage.cs