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
- GeneralTransform.cs
- ConfigurationManagerHelperFactory.cs
- EntityTypeBase.cs
- EntryPointNotFoundException.cs
- URLIdentityPermission.cs
- SvcMapFile.cs
- TextBoxBase.cs
- CodeStatementCollection.cs
- MethodInfo.cs
- IFlowDocumentViewer.cs
- Pen.cs
- SerTrace.cs
- RepeaterItemEventArgs.cs
- FileIOPermission.cs
- RawStylusInputCustomDataList.cs
- ViewPort3D.cs
- DataRowView.cs
- DefaultParameterValueAttribute.cs
- ValidationSummary.cs
- FlowDocumentView.cs
- Base64Decoder.cs
- PathGeometry.cs
- NodeInfo.cs
- EmbeddedMailObject.cs
- ContextConfiguration.cs
- Validator.cs
- UpdateCommandGenerator.cs
- AssertUtility.cs
- LinkedResourceCollection.cs
- HotCommands.cs
- EntityConnectionStringBuilder.cs
- DayRenderEvent.cs
- Properties.cs
- ConnectorSelectionGlyph.cs
- PageCache.cs
- BooleanSwitch.cs
- InkCanvas.cs
- Subset.cs
- TabControlDesigner.cs
- InternalControlCollection.cs
- PerformanceCounterScope.cs
- DataControlFieldHeaderCell.cs
- Propagator.JoinPropagator.cs
- QueryResponse.cs
- CollectionConverter.cs
- UIAgentInitializationException.cs
- FilterEventArgs.cs
- DiscoveryServiceExtension.cs
- SecurityHelper.cs
- CleanUpVirtualizedItemEventArgs.cs
- ConstructorBuilder.cs
- IisTraceWebEventProvider.cs
- RequestQueryParser.cs
- SafeArrayRankMismatchException.cs
- KeyNotFoundException.cs
- RowBinding.cs
- CacheChildrenQuery.cs
- CheckBox.cs
- EventSourceCreationData.cs
- XmlCharacterData.cs
- DownloadProgressEventArgs.cs
- TypeBuilderInstantiation.cs
- SelectionListDesigner.cs
- HtmlTableRowCollection.cs
- InstanceOwnerQueryResult.cs
- InvokerUtil.cs
- FileVersionInfo.cs
- Converter.cs
- HtmlMeta.cs
- RegexGroupCollection.cs
- DocumentViewerConstants.cs
- RuntimeTransactionHandle.cs
- MSAAEventDispatcher.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- HeaderUtility.cs
- SignatureToken.cs
- httpapplicationstate.cs
- WebPartRestoreVerb.cs
- DataSet.cs
- XmlWellformedWriter.cs
- DbConnectionStringCommon.cs
- ProxyManager.cs
- DataIdProcessor.cs
- DetailsViewInsertedEventArgs.cs
- TextEndOfParagraph.cs
- InputChannel.cs
- MouseGestureConverter.cs
- PolyBezierSegment.cs
- GridViewAutomationPeer.cs
- CaseStatement.cs
- UnionQueryOperator.cs
- IUnknownConstantAttribute.cs
- ConfigXmlComment.cs
- BmpBitmapEncoder.cs
- DBDataPermission.cs
- GrowingArray.cs
- ScopelessEnumAttribute.cs
- SqlHelper.cs
- ObfuscateAssemblyAttribute.cs
- ValidationErrorCollection.cs