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
- ParameterModifier.cs
- WindowsFormsEditorServiceHelper.cs
- DataGridViewCellEventArgs.cs
- EdmConstants.cs
- ThemeDirectoryCompiler.cs
- OperatorExpressions.cs
- NetTcpBinding.cs
- TileModeValidation.cs
- DocumentsTrace.cs
- RsaSecurityTokenParameters.cs
- AmbientValueAttribute.cs
- RichTextBox.cs
- RepeaterCommandEventArgs.cs
- EntityObject.cs
- XmlNotation.cs
- StringSorter.cs
- CheckedPointers.cs
- WindowsGraphicsWrapper.cs
- TransactionState.cs
- _DynamicWinsockMethods.cs
- SqlBulkCopyColumnMappingCollection.cs
- ToolboxItemCollection.cs
- WorkItem.cs
- AppDomainManager.cs
- ImageAutomationPeer.cs
- CapacityStreamGeometryContext.cs
- BitmapPalette.cs
- IxmlLineInfo.cs
- DefaultValueTypeConverter.cs
- RSAProtectedConfigurationProvider.cs
- SafeCryptContextHandle.cs
- InputBinder.cs
- BlurBitmapEffect.cs
- UserControl.cs
- TextServicesHost.cs
- ColorPalette.cs
- ExpressionConverter.cs
- XmlSchemaObjectCollection.cs
- ContactManager.cs
- TableLayoutStyle.cs
- SqlCommand.cs
- WindowsListBox.cs
- RegexCompilationInfo.cs
- PropertyMappingExceptionEventArgs.cs
- PixelFormat.cs
- _DigestClient.cs
- ThreadStartException.cs
- PropertyChangingEventArgs.cs
- AutomationElement.cs
- WebBrowserPermission.cs
- EpmTargetTree.cs
- Switch.cs
- GifBitmapEncoder.cs
- ServiceBehaviorElement.cs
- ComponentSerializationService.cs
- WebBrowserEvent.cs
- BackgroundFormatInfo.cs
- WebPartZoneBase.cs
- FtpWebResponse.cs
- UnitySerializationHolder.cs
- COM2ComponentEditor.cs
- StateValidator.cs
- ButtonPopupAdapter.cs
- XmlDocumentFragment.cs
- SafeBitVector32.cs
- RequestQueue.cs
- PrivacyNoticeBindingElement.cs
- MulticastDelegate.cs
- SqlFacetAttribute.cs
- ListViewItem.cs
- ComponentEditorPage.cs
- LoadWorkflowAsyncResult.cs
- XPathScanner.cs
- WhitespaceRule.cs
- OperationContextScope.cs
- SHA1Managed.cs
- IdentitySection.cs
- GroupStyle.cs
- securestring.cs
- DataGridViewUtilities.cs
- ConnectionStringSettings.cs
- Vertex.cs
- DeclarativeConditionsCollection.cs
- AQNBuilder.cs
- MessageQueueTransaction.cs
- DataGridViewLinkColumn.cs
- KeyInstance.cs
- EntityDataSourceWrapperCollection.cs
- SamlEvidence.cs
- ConfigXmlSignificantWhitespace.cs
- FileLogRecord.cs
- _UncName.cs
- AnimationClock.cs
- TextSpan.cs
- BookmarkTable.cs
- ClaimTypes.cs
- SqlStatistics.cs
- ValidatorCompatibilityHelper.cs
- XmlIncludeAttribute.cs
- DataSourceControl.cs