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
- RuleAttributes.cs
- XsltConvert.cs
- StorageEndPropertyMapping.cs
- CodeDOMUtility.cs
- SqlInternalConnectionTds.cs
- Misc.cs
- DescendantOverDescendantQuery.cs
- CodeExpressionStatement.cs
- SystemTcpConnection.cs
- InternalPolicyElement.cs
- SqlCaseSimplifier.cs
- sqlstateclientmanager.cs
- ReferenceConverter.cs
- DesignerTransactionCloseEvent.cs
- Calendar.cs
- TypeConverter.cs
- ProtocolsSection.cs
- KnownTypeAttribute.cs
- PersistenceContext.cs
- CalendarDateChangedEventArgs.cs
- SqlDataSource.cs
- BamlTreeNode.cs
- Vector3DKeyFrameCollection.cs
- Visual.cs
- TypeNameConverter.cs
- SqlXmlStorage.cs
- ModuleElement.cs
- CodeMemberMethod.cs
- BeginStoryboard.cs
- WebPartConnectionsDisconnectVerb.cs
- SerializationFieldInfo.cs
- EncryptedData.cs
- SqlClientPermission.cs
- FileLoadException.cs
- TCPListener.cs
- controlskin.cs
- BindingNavigator.cs
- AutoSizeToolBoxItem.cs
- _LocalDataStore.cs
- RSAOAEPKeyExchangeDeformatter.cs
- MarshalByValueComponent.cs
- FileDialogCustomPlace.cs
- SecurityManager.cs
- BeginStoryboard.cs
- ReadOnlyActivityGlyph.cs
- WebRequestModuleElementCollection.cs
- SingleAnimationUsingKeyFrames.cs
- ActiveDesignSurfaceEvent.cs
- PropertyFilterAttribute.cs
- InstanceContextManager.cs
- NonceCache.cs
- DataTableMapping.cs
- Timer.cs
- UnsafeNativeMethods.cs
- SourceCollection.cs
- Automation.cs
- StandardToolWindows.cs
- EraserBehavior.cs
- Signature.cs
- Baml6Assembly.cs
- WorkflowViewService.cs
- IndexingContentUnit.cs
- Transactions.cs
- MenuItemBindingCollection.cs
- DataGridViewImageColumn.cs
- LoggedException.cs
- IndexedString.cs
- XmlSchemaImport.cs
- ScriptServiceAttribute.cs
- DataSourceHelper.cs
- QilGenerator.cs
- NonceCache.cs
- TimeoutException.cs
- Vector3DConverter.cs
- ListParagraph.cs
- EventManager.cs
- InvalidDataException.cs
- ResourceExpressionBuilder.cs
- ConfigUtil.cs
- KeyEventArgs.cs
- LostFocusEventManager.cs
- PrimitiveXmlSerializers.cs
- ScriptRef.cs
- CacheMode.cs
- ColumnWidthChangingEvent.cs
- WmlMobileTextWriter.cs
- OutputCacheSettingsSection.cs
- OrderedDictionaryStateHelper.cs
- QilParameter.cs
- DataGridColumnCollection.cs
- CodeDirectoryCompiler.cs
- SafeNativeMethodsMilCoreApi.cs
- RawAppCommandInputReport.cs
- FieldToken.cs
- ImpersonateTokenRef.cs
- DesignBindingPicker.cs
- SnapshotChangeTrackingStrategy.cs
- ServiceBuildProvider.cs
- SerializableAttribute.cs
- CreateSequenceResponse.cs