Code:
/ DotNET / DotNET / 8.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
- WmlPageAdapter.cs
- DetailsViewDeleteEventArgs.cs
- ClientFormsAuthenticationCredentials.cs
- RPIdentityRequirement.cs
- OdbcPermission.cs
- Menu.cs
- Item.cs
- ListViewGroupConverter.cs
- ComNativeDescriptor.cs
- XmlChildNodes.cs
- OdbcConnectionPoolProviderInfo.cs
- ClientConvert.cs
- isolationinterop.cs
- SmtpNegotiateAuthenticationModule.cs
- LocationEnvironment.cs
- TrustLevel.cs
- MergePropertyDescriptor.cs
- ValidationEventArgs.cs
- DataGridLength.cs
- _CacheStreams.cs
- TextModifier.cs
- SatelliteContractVersionAttribute.cs
- FileEnumerator.cs
- AttributeConverter.cs
- TextBoxAutoCompleteSourceConverter.cs
- SizeF.cs
- AttachmentService.cs
- MatcherBuilder.cs
- DataGridCell.cs
- ClientScriptManager.cs
- Trace.cs
- Freezable.cs
- Environment.cs
- DataPagerFieldItem.cs
- ComponentCommands.cs
- MasterPageParser.cs
- TypeConverterAttribute.cs
- BuildManagerHost.cs
- XmlValidatingReader.cs
- AutomationPatternInfo.cs
- SynchronizationContext.cs
- SingleStorage.cs
- Crc32Helper.cs
- DocumentOrderComparer.cs
- SuppressMergeCheckAttribute.cs
- XXXInfos.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- GlyphRunDrawing.cs
- StringArrayConverter.cs
- UIElementIsland.cs
- FilterElement.cs
- RoleManagerSection.cs
- SubMenuStyle.cs
- RangeValidator.cs
- cookiecontainer.cs
- AnimatedTypeHelpers.cs
- ThumbButtonInfo.cs
- MetadataSerializer.cs
- ImageCodecInfoPrivate.cs
- DataListItemCollection.cs
- ToolStripItemTextRenderEventArgs.cs
- NodeFunctions.cs
- BevelBitmapEffect.cs
- HtmlInputText.cs
- DataGridViewDataConnection.cs
- XmlReader.cs
- RuleSettingsCollection.cs
- ViewBox.cs
- MultilineStringConverter.cs
- ObsoleteAttribute.cs
- EntityDataSourceMemberPath.cs
- NewItemsContextMenuStrip.cs
- CodeTypeReferenceCollection.cs
- QueryBranchOp.cs
- CommonServiceBehaviorElement.cs
- SQLBinaryStorage.cs
- NamespaceQuery.cs
- PrivilegeNotHeldException.cs
- ProgressBar.cs
- ValueHandle.cs
- StringTraceRecord.cs
- ProgressBar.cs
- HttpCapabilitiesEvaluator.cs
- HttpPostedFile.cs
- FilteredAttributeCollection.cs
- ServicesExceptionNotHandledEventArgs.cs
- ToolStripPanelRenderEventArgs.cs
- MDIControlStrip.cs
- RadioButtonStandardAdapter.cs
- DisposableCollectionWrapper.cs
- CodePrimitiveExpression.cs
- SystemGatewayIPAddressInformation.cs
- EnumBuilder.cs
- QilCloneVisitor.cs
- VerificationAttribute.cs
- UniqueConstraint.cs
- DrawingContextDrawingContextWalker.cs
- BoolLiteral.cs
- ChannelReliableSession.cs
- SqlRowUpdatedEvent.cs