Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / ComponentModel / COM2Interop / COM2ComponentEditor.cs / 1305376 / COM2ComponentEditor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.ComponentModel.Com2Interop { using System.Runtime.Remoting; using System.Runtime.InteropServices; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System; using System.Collections; using Microsoft.Win32; using System.Windows.Forms.Design; internal class Com2ComponentEditor : WindowsFormsComponentEditor { public static bool NeedsComponentEditor(object obj) { if (obj is NativeMethods.IPerPropertyBrowsing) { // check for a property page Guid guid = Guid.Empty; int hr = ((NativeMethods.IPerPropertyBrowsing)obj).MapPropertyToPage(NativeMethods.MEMBERID_NIL, out guid); if ((hr == NativeMethods.S_OK) && !guid.Equals(Guid.Empty)) { return true; } } if (obj is NativeMethods.ISpecifyPropertyPages) { try { NativeMethods.tagCAUUID uuids = new NativeMethods.tagCAUUID(); try { ((NativeMethods.ISpecifyPropertyPages)obj).GetPages(uuids); if (uuids.cElems > 0) { return true; } } finally { if (uuids.pElems != IntPtr.Zero) { Marshal.FreeCoTaskMem(uuids.pElems); } } } catch { } return false; } return false; } [ SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters") // This was shipped in Everett. ] public override bool EditComponent(ITypeDescriptorContext context, object obj, IWin32Window parent) { IntPtr handle = (parent == null ? IntPtr.Zero : parent.Handle); // try to get the page guid if (obj is NativeMethods.IPerPropertyBrowsing) { // check for a property page Guid guid = Guid.Empty; int hr = ((NativeMethods.IPerPropertyBrowsing)obj).MapPropertyToPage(NativeMethods.MEMBERID_NIL, out guid); if (hr == NativeMethods.S_OK) { if (!guid.Equals(Guid.Empty)) { object o = obj; SafeNativeMethods.OleCreatePropertyFrame(new HandleRef(parent, handle), 0, 0, "PropertyPages", 1, ref o, 1, new Guid[]{guid}, Application.CurrentCulture.LCID, 0, IntPtr.Zero); return true; } } } if (obj is NativeMethods.ISpecifyPropertyPages) { bool failed = false; Exception failureException; try { NativeMethods.tagCAUUID uuids = new NativeMethods.tagCAUUID(); try { ((NativeMethods.ISpecifyPropertyPages)obj).GetPages(uuids); if (uuids.cElems <= 0) { return false; } } catch { return false; } try { object o = obj; SafeNativeMethods.OleCreatePropertyFrame(new HandleRef(parent, handle), 0, 0, "PropertyPages", 1, ref o, uuids.cElems, new HandleRef(uuids, uuids.pElems), Application.CurrentCulture.LCID, 0, IntPtr.Zero); return true; } finally { if (uuids.pElems != IntPtr.Zero) { Marshal.FreeCoTaskMem(uuids.pElems); } } } catch (Exception ex1) { failed = true; failureException = ex1; } if (failed) { String errString = SR.GetString(SR.ErrorPropertyPageFailed); IUIService uiSvc = (context != null) ? ((IUIService) context.GetService(typeof(IUIService))) : null; if (uiSvc == null) { RTLAwareMessageBox.Show(null, errString, SR.GetString(SR.PropertyGridTitle), MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 0); } else if (failureException != null) { uiSvc.ShowError(failureException, errString); } else { uiSvc.ShowError(errString); } } } return false; } } } // 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
- PerformanceCounterPermissionEntryCollection.cs
- Barrier.cs
- MembershipSection.cs
- CookieProtection.cs
- AppDomainFactory.cs
- CallbackHandler.cs
- SqlDataSourceCache.cs
- TypeInitializationException.cs
- WindowsListViewSubItem.cs
- RuntimeResourceSet.cs
- UICuesEvent.cs
- XamlSerializerUtil.cs
- ValueExpressions.cs
- CollectionBuilder.cs
- ExpressionBuilderContext.cs
- SafeSecurityHelper.cs
- PrintDocument.cs
- DataColumnMapping.cs
- AnnotationObservableCollection.cs
- WindowsAuthenticationModule.cs
- GCHandleCookieTable.cs
- ExceptionRoutedEventArgs.cs
- AccessText.cs
- CodeCatchClauseCollection.cs
- ComplexLine.cs
- SessionStateUtil.cs
- ValidationErrorEventArgs.cs
- TraceInternal.cs
- SmiMetaDataProperty.cs
- LockedAssemblyCache.cs
- DataGridViewCellEventArgs.cs
- sqlmetadatafactory.cs
- SqlGatherProducedAliases.cs
- XmlSchemaSimpleContentRestriction.cs
- SynchronizedInputAdaptor.cs
- ElementInit.cs
- DataGridCaption.cs
- ActivityTrace.cs
- EntityKeyElement.cs
- QueryContinueDragEventArgs.cs
- ThreadInterruptedException.cs
- ThrowHelper.cs
- TextTreePropertyUndoUnit.cs
- RegexTree.cs
- DelegatedStream.cs
- DataErrorValidationRule.cs
- FamilyTypefaceCollection.cs
- Context.cs
- HierarchicalDataTemplate.cs
- DesignerResources.cs
- CaseStatement.cs
- DataGridBoundColumn.cs
- DataGridViewImageColumn.cs
- BroadcastEventHelper.cs
- Maps.cs
- VariableQuery.cs
- SafeProcessHandle.cs
- ToolStripPanelRow.cs
- ReadContentAsBinaryHelper.cs
- ExpressionsCollectionEditor.cs
- WebEventCodes.cs
- Crypto.cs
- QuotedPairReader.cs
- VectorValueSerializer.cs
- ProfileService.cs
- TouchPoint.cs
- COM2PictureConverter.cs
- SortedList.cs
- MediaElementAutomationPeer.cs
- ProviderManager.cs
- IntegerValidatorAttribute.cs
- Point3DAnimationUsingKeyFrames.cs
- SafeSecurityHelper.cs
- TypographyProperties.cs
- SocketPermission.cs
- ApplicationGesture.cs
- EmptyStringExpandableObjectConverter.cs
- RegexStringValidatorAttribute.cs
- cookieexception.cs
- MessagingDescriptionAttribute.cs
- StandardMenuStripVerb.cs
- XmlParserContext.cs
- EntityFrameworkVersions.cs
- IndependentlyAnimatedPropertyMetadata.cs
- NotConverter.cs
- GradientStopCollection.cs
- EventProvider.cs
- ListViewGroupConverter.cs
- ContextMarshalException.cs
- ProfilePropertySettingsCollection.cs
- BooleanFacetDescriptionElement.cs
- ImageBrush.cs
- InkCanvasSelection.cs
- Variable.cs
- CookielessHelper.cs
- HttpListenerPrefixCollection.cs
- BrushValueSerializer.cs
- XsdBuilder.cs
- FormsIdentity.cs
- ToolboxItemSnapLineBehavior.cs