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
- RedBlackList.cs
- IntSecurity.cs
- DelegateBodyWriter.cs
- Canonicalizers.cs
- httpserverutility.cs
- _FtpDataStream.cs
- RelatedImageListAttribute.cs
- Geometry3D.cs
- ProxyWebPartManager.cs
- NavigationEventArgs.cs
- StrokeNodeData.cs
- WebConfigurationFileMap.cs
- DesignerCategoryAttribute.cs
- DrawingVisualDrawingContext.cs
- TextBoxAutoCompleteSourceConverter.cs
- Color.cs
- CodeNamespace.cs
- StylusPointPropertyUnit.cs
- DataListItemEventArgs.cs
- AssociationTypeEmitter.cs
- UserControlAutomationPeer.cs
- ProxyAttribute.cs
- UnsafeNativeMethods.cs
- JsonDeserializer.cs
- DataServiceQueryProvider.cs
- JsonCollectionDataContract.cs
- CalendarDateRangeChangingEventArgs.cs
- SQLCharsStorage.cs
- EventManager.cs
- MULTI_QI.cs
- AmbientProperties.cs
- SyncMethodInvoker.cs
- UnsafeNativeMethods.cs
- RemotingException.cs
- Serializer.cs
- ManipulationInertiaStartingEventArgs.cs
- EntityDataSourceEntityTypeFilterItem.cs
- IndexExpression.cs
- TextAction.cs
- UIElementHelper.cs
- InputReport.cs
- ObjectQueryExecutionPlan.cs
- X509Utils.cs
- ObjectDataProvider.cs
- FixedSOMTableCell.cs
- ConfigurationManagerHelper.cs
- ModelPropertyImpl.cs
- SafeTokenHandle.cs
- NativeMethods.cs
- DynamicActionMessageFilter.cs
- documentation.cs
- StreamSecurityUpgradeInitiatorBase.cs
- WindowsEditBox.cs
- TemplateAction.cs
- DiscoveryInnerClientManaged11.cs
- SelectorItemAutomationPeer.cs
- TcpTransportBindingElement.cs
- ToolBarOverflowPanel.cs
- ButtonBaseAutomationPeer.cs
- BufferedGraphicsContext.cs
- LineServices.cs
- TraceUtility.cs
- XamlTypeMapperSchemaContext.cs
- ClientBuildManager.cs
- CodeAttributeArgumentCollection.cs
- SemanticValue.cs
- DocumentViewerAutomationPeer.cs
- input.cs
- RsaElement.cs
- DataGridViewMethods.cs
- BindingManagerDataErrorEventArgs.cs
- AbsoluteQuery.cs
- WorkflowApplicationAbortedException.cs
- ObjectTypeMapping.cs
- UserUseLicenseDictionaryLoader.cs
- PropertyIDSet.cs
- QilNode.cs
- ColumnMap.cs
- QueryCoreOp.cs
- MenuItemStyle.cs
- SmtpMail.cs
- HostedElements.cs
- HttpCacheVary.cs
- HebrewCalendar.cs
- TextEndOfParagraph.cs
- SchemaName.cs
- __FastResourceComparer.cs
- XmlSerializableWriter.cs
- IndexedGlyphRun.cs
- SystemFonts.cs
- CompareValidator.cs
- XmlTypeAttribute.cs
- BaseHashHelper.cs
- ObjectDataSource.cs
- DataGridViewAdvancedBorderStyle.cs
- ManagementInstaller.cs
- UnaryQueryOperator.cs
- XmlTextEncoder.cs
- TemplateInstanceAttribute.cs
- IisTraceListener.cs