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
- _AcceptOverlappedAsyncResult.cs
- DeploymentSectionCache.cs
- _NetworkingPerfCounters.cs
- RoleManagerModule.cs
- Accessible.cs
- LocalizationComments.cs
- UriPrefixTable.cs
- DrawingCollection.cs
- HttpResponse.cs
- EmbossBitmapEffect.cs
- XpsFilter.cs
- TableDetailsRow.cs
- ArgumentException.cs
- URLString.cs
- Win32MouseDevice.cs
- ItemCollection.cs
- SqlException.cs
- TrackingQueryElement.cs
- Root.cs
- CollectionView.cs
- AnimationClock.cs
- SendActivityEventArgs.cs
- KnownIds.cs
- BitmapPalettes.cs
- MessageProperties.cs
- SerializableReadOnlyDictionary.cs
- DataGridPagingPage.cs
- ElementFactory.cs
- RootProfilePropertySettingsCollection.cs
- OutputWindow.cs
- XmlNavigatorStack.cs
- MinMaxParagraphWidth.cs
- BCLDebug.cs
- securitymgrsite.cs
- EventDescriptorCollection.cs
- SafeTimerHandle.cs
- MappingModelBuildProvider.cs
- ModuleConfigurationInfo.cs
- XamlFigureLengthSerializer.cs
- Message.cs
- ServiceModelEnhancedConfigurationElementCollection.cs
- InputLanguageProfileNotifySink.cs
- GraphicsPath.cs
- DataReceivedEventArgs.cs
- Preprocessor.cs
- DataGridViewDesigner.cs
- MarshalDirectiveException.cs
- ViewStateModeByIdAttribute.cs
- CacheManager.cs
- AttachmentService.cs
- MoveSizeWinEventHandler.cs
- EntityViewGenerationConstants.cs
- WorkflowViewStateService.cs
- MobileControl.cs
- OleCmdHelper.cs
- MethodBuilderInstantiation.cs
- PersonalizationState.cs
- AddInBase.cs
- XmlRawWriterWrapper.cs
- StreamGeometryContext.cs
- MarginsConverter.cs
- ColumnPropertiesGroup.cs
- StorageModelBuildProvider.cs
- TriggerCollection.cs
- SchemaImporterExtension.cs
- TableLayoutPanel.cs
- ZipIOLocalFileBlock.cs
- AuthenticationService.cs
- StrokeCollectionDefaultValueFactory.cs
- GuidTagList.cs
- Converter.cs
- QueryableDataSource.cs
- SimpleWebHandlerParser.cs
- CaseInsensitiveHashCodeProvider.cs
- RawStylusInputCustomData.cs
- DataPointer.cs
- SchemaDeclBase.cs
- HierarchicalDataBoundControl.cs
- MatrixUtil.cs
- SoundPlayer.cs
- DataTablePropertyDescriptor.cs
- ObjectTag.cs
- DataControlHelper.cs
- ToolStripItemImageRenderEventArgs.cs
- InstanceValue.cs
- SecurityManager.cs
- ScriptMethodAttribute.cs
- EntityWithKeyStrategy.cs
- Section.cs
- HTMLTagNameToTypeMapper.cs
- ProcessStartInfo.cs
- AppAction.cs
- BamlLocalizationDictionary.cs
- XamlFrame.cs
- RightNameExpirationInfoPair.cs
- CommandBindingCollection.cs
- MemberAccessException.cs
- DelegateSerializationHolder.cs
- TraceContextRecord.cs
- StrokeCollectionDefaultValueFactory.cs