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
- AttachInfo.cs
- DictionaryEntry.cs
- SqlNamer.cs
- Ipv6Element.cs
- StylusTip.cs
- ApplicationFileParser.cs
- TabPage.cs
- Console.cs
- ToolBarButton.cs
- CodeTypeParameter.cs
- AutoResetEvent.cs
- SafeNativeMethods.cs
- XMLDiffLoader.cs
- SmiContext.cs
- XmlAttribute.cs
- SystemFonts.cs
- PreProcessor.cs
- XpsStructure.cs
- input.cs
- TabletCollection.cs
- ProcessModule.cs
- FontFamily.cs
- MediaContextNotificationWindow.cs
- ListViewAutomationPeer.cs
- AvTrace.cs
- EntityContainerEntitySet.cs
- ErrorFormatter.cs
- DataKeyCollection.cs
- DSACryptoServiceProvider.cs
- LiteralControl.cs
- MemoryFailPoint.cs
- Int64AnimationUsingKeyFrames.cs
- DataViewManagerListItemTypeDescriptor.cs
- NullableDecimalSumAggregationOperator.cs
- CharacterBuffer.cs
- StylusPointProperties.cs
- SemanticValue.cs
- DbCommandTree.cs
- DataGridTemplateColumn.cs
- AsyncStreamReader.cs
- EncoderNLS.cs
- MatrixCamera.cs
- StylusPlugInCollection.cs
- EpmTargetPathSegment.cs
- FontSizeConverter.cs
- TimeSpanValidator.cs
- GetIndexBinder.cs
- TypeSource.cs
- BindingExpressionUncommonField.cs
- XmlSchemaAttributeGroup.cs
- QueryAccessibilityHelpEvent.cs
- OutOfMemoryException.cs
- ChannelPoolSettings.cs
- RelationshipEnd.cs
- AttachedPropertyInfo.cs
- SqlResolver.cs
- invalidudtexception.cs
- ApplicationBuildProvider.cs
- SynchronizationLockException.cs
- TimeEnumHelper.cs
- KeyProperty.cs
- BooleanFunctions.cs
- WorkItem.cs
- AnonymousIdentificationSection.cs
- XmlSchemaSimpleContentExtension.cs
- ValueHandle.cs
- Animatable.cs
- LinqToSqlWrapper.cs
- FunctionImportMapping.cs
- RequestCacheValidator.cs
- ApplicationServicesHostFactory.cs
- StandardOleMarshalObject.cs
- ProfessionalColorTable.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SchemaTableOptionalColumn.cs
- DateTimeOffset.cs
- SQLGuidStorage.cs
- WebSysDisplayNameAttribute.cs
- ParserOptions.cs
- XNodeNavigator.cs
- HtmlTextArea.cs
- ResourceExpression.cs
- GridViewRowEventArgs.cs
- QuaternionValueSerializer.cs
- TcpChannelListener.cs
- Vector3D.cs
- ObjectSet.cs
- Context.cs
- ToolConsole.cs
- DodSequenceMerge.cs
- RemotingServices.cs
- UpdatePanel.cs
- TextCollapsingProperties.cs
- SmtpAuthenticationManager.cs
- DbSetClause.cs
- SiteMapNode.cs
- SessionEndedEventArgs.cs
- linebase.cs
- ControlBindingsCollection.cs
- DataBinding.cs