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
- ObjectCloneHelper.cs
- ProfileModule.cs
- NumberFormatter.cs
- PreloadedPackages.cs
- ProfileSettingsCollection.cs
- GeometryValueSerializer.cs
- Parallel.cs
- CommandField.cs
- ProcessHostServerConfig.cs
- KeyGestureConverter.cs
- XsltContext.cs
- DocumentGrid.cs
- dataobject.cs
- TokenBasedSet.cs
- COM2IPerPropertyBrowsingHandler.cs
- ModelItemCollection.cs
- CompoundFileReference.cs
- RangeBaseAutomationPeer.cs
- HashHelper.cs
- IBuiltInEvidence.cs
- WebPartEditorCancelVerb.cs
- ExclusiveNamedPipeTransportManager.cs
- Win32PrintDialog.cs
- EntityDataSourceDesigner.cs
- WindowsToolbarAsMenu.cs
- SecondaryIndex.cs
- Configuration.cs
- TextRangeAdaptor.cs
- ValidationRule.cs
- FileDialog_Vista.cs
- CodeNamespaceImportCollection.cs
- SplitContainer.cs
- IIS7WorkerRequest.cs
- NullRuntimeConfig.cs
- RotateTransform.cs
- ChannelServices.cs
- COMException.cs
- SmiRequestExecutor.cs
- ColumnMapTranslator.cs
- WindowShowOrOpenTracker.cs
- MarshalByValueComponent.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- CurrencyWrapper.cs
- safex509handles.cs
- FileIOPermission.cs
- formatter.cs
- Transform.cs
- RoutedEventValueSerializer.cs
- BitArray.cs
- PersianCalendar.cs
- InstanceNotReadyException.cs
- ValidationResult.cs
- DbSourceParameterCollection.cs
- MethodBuilder.cs
- RangeBase.cs
- SafeNativeMethodsCLR.cs
- PresentationTraceSources.cs
- InvalidCommandTreeException.cs
- EventSourceCreationData.cs
- XmlElement.cs
- SmiEventSink.cs
- RtType.cs
- DocumentGridContextMenu.cs
- AttributeData.cs
- TemplateControlCodeDomTreeGenerator.cs
- GridItemPatternIdentifiers.cs
- Helper.cs
- TextSelectionHelper.cs
- SmtpSection.cs
- InternalDispatchObject.cs
- CalendarBlackoutDatesCollection.cs
- URLAttribute.cs
- DaylightTime.cs
- AppDomainFactory.cs
- ItemsControlAutomationPeer.cs
- FileCodeGroup.cs
- CodeRemoveEventStatement.cs
- SimpleWebHandlerParser.cs
- PropertyChangedEventManager.cs
- HandleCollector.cs
- KeyEventArgs.cs
- ContentPosition.cs
- ApplicationManager.cs
- ExecutorLocksHeldException.cs
- xamlnodes.cs
- AcceptorSessionSymmetricTransportSecurityProtocol.cs
- RankException.cs
- COM2PropertyBuilderUITypeEditor.cs
- documentsequencetextcontainer.cs
- EntitySetBase.cs
- OdbcDataReader.cs
- Resources.Designer.cs
- MapPathBasedVirtualPathProvider.cs
- ImageDrawing.cs
- CommandHelper.cs
- AnnotationStore.cs
- FixedTextSelectionProcessor.cs
- DynamicPropertyReader.cs
- CompilerWrapper.cs
- AspNetCompatibilityRequirementsAttribute.cs