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
- DataContract.cs
- DocumentReferenceCollection.cs
- RankException.cs
- BamlRecordWriter.cs
- DocumentSequenceHighlightLayer.cs
- WebHeaderCollection.cs
- odbcmetadatacollectionnames.cs
- SelectionItemProviderWrapper.cs
- SqlDesignerDataSourceView.cs
- ContractsBCL.cs
- ProtocolsConfigurationEntry.cs
- SqlUserDefinedAggregateAttribute.cs
- SwitchElementsCollection.cs
- DurableRuntimeValidator.cs
- MemberInitExpression.cs
- StrongNameUtility.cs
- Activity.cs
- ProtocolsConfigurationHandler.cs
- ToolbarAUtomationPeer.cs
- AssemblyName.cs
- CoreSwitches.cs
- AmbientLight.cs
- XmlWriterSettings.cs
- PolyLineSegmentFigureLogic.cs
- CheckBoxStandardAdapter.cs
- CellParagraph.cs
- Empty.cs
- SyndicationItem.cs
- VectorCollectionValueSerializer.cs
- PropertyPath.cs
- StrokeSerializer.cs
- GroupBox.cs
- DirectoryLocalQuery.cs
- WebSysDescriptionAttribute.cs
- DefaultValueTypeConverter.cs
- MetadataArtifactLoaderComposite.cs
- Calendar.cs
- TextParagraphCache.cs
- DataGridViewRowsRemovedEventArgs.cs
- newinstructionaction.cs
- TraceRecords.cs
- XamlBrushSerializer.cs
- RealizationDrawingContextWalker.cs
- PenThreadWorker.cs
- QilPatternFactory.cs
- ThreadLocal.cs
- ScriptServiceAttribute.cs
- HMACSHA256.cs
- ProtectedConfigurationSection.cs
- ListViewItemEventArgs.cs
- ExpressionLink.cs
- CancellationToken.cs
- ControlSerializer.cs
- ActivatableWorkflowsQueryResult.cs
- XsltCompileContext.cs
- TemplateBindingExpression.cs
- CopyCodeAction.cs
- Queue.cs
- TextSchema.cs
- DataGridViewSelectedRowCollection.cs
- OraclePermissionAttribute.cs
- SQLConvert.cs
- BitmapSizeOptions.cs
- IdentifierCreationService.cs
- TableRow.cs
- Wildcard.cs
- XPathNavigatorReader.cs
- Query.cs
- ResXResourceReader.cs
- counter.cs
- SmiEventSink.cs
- ScrollChrome.cs
- ContextStaticAttribute.cs
- PersianCalendar.cs
- ConstructorBuilder.cs
- PartitionResolver.cs
- SrgsOneOf.cs
- ColorComboBox.cs
- DictionaryManager.cs
- IOException.cs
- JsonReaderWriterFactory.cs
- SizeChangedInfo.cs
- DebugHandleTracker.cs
- PiiTraceSource.cs
- ModifyActivitiesPropertyDescriptor.cs
- HiddenFieldPageStatePersister.cs
- ErrorsHelper.cs
- ActionMessageFilter.cs
- PrimitiveXmlSerializers.cs
- Tokenizer.cs
- MessageHeaderT.cs
- ConfigXmlElement.cs
- XhtmlBasicCommandAdapter.cs
- PropertyBuilder.cs
- PerSessionInstanceContextProvider.cs
- PriorityRange.cs
- HtmlForm.cs
- localization.cs
- BindingExpression.cs
- storepermissionattribute.cs