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
- ToolStripRenderEventArgs.cs
- FontStretch.cs
- DataGridViewCellStateChangedEventArgs.cs
- ScrollableControl.cs
- ProtectedProviderSettings.cs
- ServiceDocumentFormatter.cs
- AbstractExpressions.cs
- BamlResourceDeserializer.cs
- PkcsMisc.cs
- SimpleTextLine.cs
- WebPartVerb.cs
- SimpleWorkerRequest.cs
- PassportPrincipal.cs
- ConfigurationFileMap.cs
- XmlWrappingReader.cs
- figurelength.cs
- DefaultPrintController.cs
- SafeViewOfFileHandle.cs
- FilterElement.cs
- RectangleGeometry.cs
- XmlSchemaAll.cs
- RegisteredExpandoAttribute.cs
- InheritanceService.cs
- SamlAction.cs
- EdmItemCollection.cs
- OracleSqlParser.cs
- CngUIPolicy.cs
- IApplicationTrustManager.cs
- StreamUpgradeProvider.cs
- SessionEndedEventArgs.cs
- TemplateColumn.cs
- Invariant.cs
- Splitter.cs
- StringKeyFrameCollection.cs
- DbSourceParameterCollection.cs
- LinkedResourceCollection.cs
- validationstate.cs
- ViewLoader.cs
- ExpressionVisitorHelpers.cs
- MemberRestriction.cs
- ControlAdapter.cs
- WebServiceHost.cs
- PeerReferralPolicy.cs
- ExpressionCopier.cs
- mansign.cs
- ReliableRequestSessionChannel.cs
- InfoCardKeyedHashAlgorithm.cs
- PassportAuthentication.cs
- RSAPKCS1SignatureDeformatter.cs
- BitmapData.cs
- TreeNodeStyleCollection.cs
- FrameAutomationPeer.cs
- ActiveXSite.cs
- ExtensionQuery.cs
- SyndicationDeserializer.cs
- ProtocolsConfigurationEntry.cs
- CurrencyWrapper.cs
- MonthChangedEventArgs.cs
- ExpandCollapseProviderWrapper.cs
- FlowDocumentPage.cs
- DeferredSelectedIndexReference.cs
- ConfigurationStrings.cs
- ContentElement.cs
- BamlBinaryReader.cs
- SafeNativeMethods.cs
- KnownTypes.cs
- AtlasWeb.Designer.cs
- CultureTable.cs
- EncodingTable.cs
- HwndStylusInputProvider.cs
- PersonalizationEntry.cs
- webproxy.cs
- ReadonlyMessageFilter.cs
- PackagePart.cs
- AttachedAnnotation.cs
- Itemizer.cs
- AlphabeticalEnumConverter.cs
- PolyBezierSegment.cs
- Cursor.cs
- TypeContext.cs
- ContentControl.cs
- InputReportEventArgs.cs
- ApplicationSettingsBase.cs
- ColorMatrix.cs
- LoginViewDesigner.cs
- EventListener.cs
- FixedSOMPage.cs
- CompositeDataBoundControl.cs
- PackWebRequest.cs
- _SecureChannel.cs
- ColorContext.cs
- DesignerCalendarAdapter.cs
- XmlReflectionMember.cs
- HttpPostedFileBase.cs
- BitmapEffect.cs
- RoutedEventConverter.cs
- GenericTypeParameterConverter.cs
- DrawingContextWalker.cs
- ListViewGroupConverter.cs
- Accessible.cs