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
- MetaData.cs
- RequiredFieldValidator.cs
- SafeHandles.cs
- AssemblyBuilder.cs
- DispatchChannelSink.cs
- CacheDependency.cs
- versioninfo.cs
- ScopeElement.cs
- DigestComparer.cs
- DataTableNameHandler.cs
- SemanticResolver.cs
- DataStreams.cs
- PropertySourceInfo.cs
- PerfCounters.cs
- ClientEventManager.cs
- PointValueSerializer.cs
- SecurityKeyType.cs
- ScriptModule.cs
- XsltContext.cs
- MetadataSet.cs
- DynamicVirtualDiscoSearcher.cs
- NegotiateStream.cs
- LayoutDump.cs
- ValueTable.cs
- EntityDataSourceValidationException.cs
- diagnosticsswitches.cs
- PageTheme.cs
- NgenServicingAttributes.cs
- SafeFileMappingHandle.cs
- WorkflowOwnerAsyncResult.cs
- DiscoveryExceptionDictionary.cs
- XmlConverter.cs
- SimpleHandlerFactory.cs
- DbException.cs
- DesignRelation.cs
- WebPageTraceListener.cs
- XamlRtfConverter.cs
- DocumentAutomationPeer.cs
- ReceiveContextCollection.cs
- _ConnectionGroup.cs
- SingleStorage.cs
- Stack.cs
- Point4DConverter.cs
- URLAttribute.cs
- ErrorEventArgs.cs
- WebPartTransformerCollection.cs
- DataDocumentXPathNavigator.cs
- StylusPointPropertyInfo.cs
- MsmqSecureHashAlgorithm.cs
- PolicyStatement.cs
- FormClosedEvent.cs
- Nullable.cs
- BuildResult.cs
- SiteMapPath.cs
- DiagnosticsConfiguration.cs
- InputElement.cs
- TagPrefixInfo.cs
- StreamSecurityUpgradeInitiatorBase.cs
- BoolExpr.cs
- XmlSchemaElement.cs
- PageParserFilter.cs
- GridViewColumnCollection.cs
- ListViewDataItem.cs
- MessageTransmitTraceRecord.cs
- WebBrowserEvent.cs
- PartitionResolver.cs
- ContentElementAutomationPeer.cs
- TabPanel.cs
- PropertyState.cs
- ObjectKeyFrameCollection.cs
- DocumentPageViewAutomationPeer.cs
- XmlDomTextWriter.cs
- ProtocolImporter.cs
- ServiceModelPerformanceCounters.cs
- ResourceManager.cs
- HandlerBase.cs
- HebrewCalendar.cs
- PublisherMembershipCondition.cs
- TreeNodeBindingCollection.cs
- TextSearch.cs
- DoubleAnimationUsingKeyFrames.cs
- Accessors.cs
- WFItemsToSpacerVisibility.cs
- ToolStrip.cs
- ReflectionTypeLoadException.cs
- FormatterServices.cs
- PtsHelper.cs
- OdbcDataAdapter.cs
- RequestContext.cs
- ReflectionPermission.cs
- PersianCalendar.cs
- MILUtilities.cs
- TreeNodeMouseHoverEvent.cs
- UInt64.cs
- Visual.cs
- ExpandCollapseProviderWrapper.cs
- DiscreteKeyFrames.cs
- DoubleLinkListEnumerator.cs
- SectionVisual.cs
- IdentityManager.cs