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
- TrustManager.cs
- ValueQuery.cs
- ZipIOExtraFieldElement.cs
- HandleScope.cs
- BulletChrome.cs
- EnumerableRowCollectionExtensions.cs
- Operators.cs
- XmlCustomFormatter.cs
- BinaryParser.cs
- NativeMethods.cs
- MappingSource.cs
- ResourceDefaultValueAttribute.cs
- DataServiceExpressionVisitor.cs
- MailAddressCollection.cs
- COM2EnumConverter.cs
- Preprocessor.cs
- RectIndependentAnimationStorage.cs
- TextSchema.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- GregorianCalendar.cs
- SspiNegotiationTokenProviderState.cs
- FontDialog.cs
- ProviderSettingsCollection.cs
- ConnectionManagementElementCollection.cs
- ScaleTransform.cs
- XmlSchemaSet.cs
- Rule.cs
- WindowInteropHelper.cs
- _OSSOCK.cs
- ImplicitInputBrush.cs
- WebConfigurationHostFileChange.cs
- XPathSelectionIterator.cs
- WrappedIUnknown.cs
- KeyNotFoundException.cs
- BaseParaClient.cs
- RangeValueProviderWrapper.cs
- StringKeyFrameCollection.cs
- MemberExpression.cs
- UserControlCodeDomTreeGenerator.cs
- UpnEndpointIdentity.cs
- RolePrincipal.cs
- MimeMultiPart.cs
- TextAutomationPeer.cs
- FontFaceLayoutInfo.cs
- complextypematerializer.cs
- HWStack.cs
- SerializerDescriptor.cs
- ListControl.cs
- ContextStack.cs
- FileLevelControlBuilderAttribute.cs
- ImageDrawing.cs
- HtmlSelect.cs
- DateTimeFormat.cs
- VersionedStream.cs
- ValidatedControlConverter.cs
- TreeNodeStyle.cs
- RemoteWebConfigurationHost.cs
- userdatakeys.cs
- Border.cs
- GenericXmlSecurityToken.cs
- Duration.cs
- VirtualPath.cs
- PipeConnection.cs
- OdbcException.cs
- Pkcs7Recipient.cs
- HttpContext.cs
- MatrixTransform3D.cs
- CrossSiteScriptingValidation.cs
- FilePrompt.cs
- DbProviderManifest.cs
- GeometryConverter.cs
- Permission.cs
- HtmlWindowCollection.cs
- CodeComment.cs
- DrawingBrush.cs
- Focus.cs
- Delegate.cs
- EventListenerClientSide.cs
- GeneralTransformGroup.cs
- BitConverter.cs
- StyleCollectionEditor.cs
- CompiledIdentityConstraint.cs
- UnsafeNativeMethods.cs
- SoapInteropTypes.cs
- Ray3DHitTestResult.cs
- DbConnectionHelper.cs
- ArraySegment.cs
- FixedSOMFixedBlock.cs
- SmtpCommands.cs
- GenericTypeParameterBuilder.cs
- CompiledIdentityConstraint.cs
- _NegoStream.cs
- ArcSegment.cs
- SqlOuterApplyReducer.cs
- DbParameterHelper.cs
- XmlReflectionImporter.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- CalendarDay.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- VScrollProperties.cs