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
- Win32.cs
- XomlCompilerError.cs
- WindowsSolidBrush.cs
- TrackingProfileSerializer.cs
- Timer.cs
- ListViewGroupConverter.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- StringComparer.cs
- CustomErrorCollection.cs
- CompositeCollection.cs
- DocumentReference.cs
- EllipticalNodeOperations.cs
- OracleNumber.cs
- DropShadowBitmapEffect.cs
- MethodToken.cs
- PostBackOptions.cs
- RotateTransform.cs
- WebExceptionStatus.cs
- XmlSortKeyAccumulator.cs
- StoreContentChangedEventArgs.cs
- MethodCallExpression.cs
- ServerProtocol.cs
- RequestCachingSection.cs
- NameValueFileSectionHandler.cs
- GlyphRunDrawing.cs
- TagMapInfo.cs
- ClientSession.cs
- Brush.cs
- WebBrowserNavigatedEventHandler.cs
- ScrollBarAutomationPeer.cs
- EntityType.cs
- XmlChildNodes.cs
- CompressionTracing.cs
- MeshGeometry3D.cs
- EditingContext.cs
- BitmapEffectvisualstate.cs
- OdbcTransaction.cs
- NominalTypeEliminator.cs
- ProfilePropertySettingsCollection.cs
- ArglessEventHandlerProxy.cs
- ServiceHttpHandlerFactory.cs
- SpecularMaterial.cs
- DrawingCollection.cs
- TextDecoration.cs
- TransformPattern.cs
- XDeferredAxisSource.cs
- HelloOperation11AsyncResult.cs
- DropShadowBitmapEffect.cs
- DbCommandDefinition.cs
- HybridWebProxyFinder.cs
- HandoffBehavior.cs
- TransformedBitmap.cs
- FontCollection.cs
- StylusCaptureWithinProperty.cs
- RoleServiceManager.cs
- Funcletizer.cs
- TypeUtil.cs
- SourceChangedEventArgs.cs
- AtlasWeb.Designer.cs
- ExpressionWriter.cs
- ConstructorExpr.cs
- InvokeProviderWrapper.cs
- QueryStringParameter.cs
- SchemaObjectWriter.cs
- MembershipPasswordException.cs
- XmlMessageFormatter.cs
- Walker.cs
- NavigateEvent.cs
- ProtectedProviderSettings.cs
- validation.cs
- LayoutTableCell.cs
- DefaultExpression.cs
- BitStream.cs
- BitStack.cs
- Profiler.cs
- BaseCollection.cs
- Timer.cs
- PrinterUnitConvert.cs
- PagerSettings.cs
- AutoGeneratedFieldProperties.cs
- ExtendedProtectionPolicy.cs
- XmlAttribute.cs
- EndEvent.cs
- DataGridHeaderBorder.cs
- ColorInterpolationModeValidation.cs
- __Filters.cs
- ProgressBarHighlightConverter.cs
- ObjectHandle.cs
- InstancePersistenceCommand.cs
- PrePrepareMethodAttribute.cs
- ParallelDesigner.xaml.cs
- SafeIUnknown.cs
- SectionRecord.cs
- TreeNode.cs
- XamlTemplateSerializer.cs
- PaperSize.cs
- InternalReceiveMessage.cs
- CapabilitiesPattern.cs
- FixedTextContainer.cs
- SortQuery.cs