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
- RuntimeConfig.cs
- AssemblyResourceLoader.cs
- DispatcherHookEventArgs.cs
- NullRuntimeConfig.cs
- TdsParser.cs
- AtomPub10CategoriesDocumentFormatter.cs
- UserPersonalizationStateInfo.cs
- WriterOutput.cs
- TaskFileService.cs
- OdbcConnectionString.cs
- QilFunction.cs
- BamlRecordHelper.cs
- Literal.cs
- AsyncDataRequest.cs
- URLIdentityPermission.cs
- DataGridViewAccessibleObject.cs
- SkipQueryOptionExpression.cs
- SapiRecognizer.cs
- Switch.cs
- SafeSystemMetrics.cs
- WebBrowserNavigatingEventHandler.cs
- DataGridViewColumnConverter.cs
- ObjectFullSpanRewriter.cs
- HostedHttpTransportManager.cs
- WebPartZoneCollection.cs
- SchemeSettingElement.cs
- DnsPermission.cs
- SQLByteStorage.cs
- ItemCheckedEvent.cs
- BinaryMessageEncodingBindingElement.cs
- TextAdaptor.cs
- securitycriticaldata.cs
- WebScriptMetadataInstanceContextProvider.cs
- VirtualizingPanel.cs
- ComponentResourceKey.cs
- Configuration.cs
- EntitySqlQueryCacheEntry.cs
- DatePickerTextBox.cs
- ErrorReporting.cs
- Camera.cs
- MultiView.cs
- GroupBoxAutomationPeer.cs
- WebPartChrome.cs
- UrlAuthFailedErrorFormatter.cs
- Internal.cs
- TransformerConfigurationWizardBase.cs
- Rect3D.cs
- SystemTcpStatistics.cs
- DecimalConstantAttribute.cs
- InfoCardXmlSerializer.cs
- PropertyInfoSet.cs
- listitem.cs
- XamlBrushSerializer.cs
- CodeMemberEvent.cs
- RotateTransform3D.cs
- MultipleViewProviderWrapper.cs
- CompilerGlobalScopeAttribute.cs
- ChildTable.cs
- DurableErrorHandler.cs
- SchemaCollectionCompiler.cs
- OdbcConnection.cs
- Base64Encoder.cs
- Cursor.cs
- UserControl.cs
- StreamGeometryContext.cs
- Rotation3DAnimationUsingKeyFrames.cs
- TextSegment.cs
- TextCharacters.cs
- MultitargetingHelpers.cs
- KeyedCollection.cs
- ProtocolElementCollection.cs
- ClientUrlResolverWrapper.cs
- _KerberosClient.cs
- HttpCacheParams.cs
- KeyedCollection.cs
- AutoResetEvent.cs
- ThemeDictionaryExtension.cs
- CompositeScriptReferenceEventArgs.cs
- DbgUtil.cs
- HtmlWindowCollection.cs
- CompilationSection.cs
- ComponentResourceManager.cs
- WindowsRebar.cs
- SettingsAttributeDictionary.cs
- ProcessManager.cs
- ToolStripLabel.cs
- BindStream.cs
- ListSurrogate.cs
- SortQuery.cs
- SiteMapSection.cs
- XamlPointCollectionSerializer.cs
- ModuleBuilderData.cs
- CapabilitiesState.cs
- FieldBuilder.cs
- DataColumnMappingCollection.cs
- StandardBindingOptionalReliableSessionElement.cs
- DateTimeFormatInfo.cs
- ClockGroup.cs
- HttpAsyncResult.cs
- DictionaryBase.cs