Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / ComponentModel / COM2Interop / COM2ComponentEditor.cs / 1 / 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ParserContext.cs
- FontDriver.cs
- EmbeddedMailObjectsCollection.cs
- ClientUtils.cs
- DocumentApplication.cs
- LookupBindingPropertiesAttribute.cs
- Padding.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- Point3DCollection.cs
- ThreadInterruptedException.cs
- NullableConverter.cs
- EastAsianLunisolarCalendar.cs
- SrgsText.cs
- PropertyPath.cs
- CacheVirtualItemsEvent.cs
- ConfigurationPermission.cs
- SystemIcmpV6Statistics.cs
- FilteredReadOnlyMetadataCollection.cs
- IntermediatePolicyValidator.cs
- WebPartDisplayModeCancelEventArgs.cs
- HtmlInputButton.cs
- ProtocolReflector.cs
- DetailsViewPagerRow.cs
- ProfileInfo.cs
- OracleEncoding.cs
- xmlNames.cs
- ProcessHostConfigUtils.cs
- MethodExpression.cs
- GB18030Encoding.cs
- CredentialCache.cs
- Matrix.cs
- RoleGroup.cs
- GridView.cs
- initElementDictionary.cs
- CopyOnWriteList.cs
- LiteralControl.cs
- RoleGroup.cs
- ImageMapEventArgs.cs
- UnauthorizedAccessException.cs
- EncoderReplacementFallback.cs
- BlurEffect.cs
- EmptyQuery.cs
- SpellerInterop.cs
- OperationContextScope.cs
- PageParser.cs
- DescendantBaseQuery.cs
- BindingBase.cs
- SystemWebCachingSectionGroup.cs
- NetCodeGroup.cs
- DirectoryGroupQuery.cs
- CompilerGeneratedAttribute.cs
- PlacementWorkspace.cs
- Mappings.cs
- XmlTypeAttribute.cs
- CompensationTokenData.cs
- LabelInfo.cs
- WSFederationHttpSecurityMode.cs
- XamlClipboardData.cs
- DataError.cs
- DrawingCollection.cs
- XmlSiteMapProvider.cs
- TheQuery.cs
- BitmapData.cs
- SByteConverter.cs
- ServerIdentity.cs
- DateTimeOffset.cs
- FrameworkElementFactory.cs
- UniqueConstraint.cs
- WebPartHelpVerb.cs
- CharEntityEncoderFallback.cs
- DataRelationCollection.cs
- ContentType.cs
- DataDesignUtil.cs
- IdentityReference.cs
- ComboBoxRenderer.cs
- DbMetaDataCollectionNames.cs
- CryptoKeySecurity.cs
- ButtonStandardAdapter.cs
- ConnectionInterfaceCollection.cs
- XhtmlBasicControlAdapter.cs
- RelationshipConverter.cs
- StdRegProviderWrapper.cs
- DeobfuscatingStream.cs
- UshortList2.cs
- CultureInfoConverter.cs
- DataGridPagerStyle.cs
- InstalledFontCollection.cs
- RIPEMD160.cs
- DataColumnMappingCollection.cs
- XmlCharCheckingWriter.cs
- NetSectionGroup.cs
- IntSumAggregationOperator.cs
- UIElement3D.cs
- ReturnEventArgs.cs
- EdmToObjectNamespaceMap.cs
- DialogResultConverter.cs
- FixedDSBuilder.cs
- TdsParserHelperClasses.cs
- MediaContext.cs
- Stackframe.cs