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
- SQLInt64.cs
- RegexCompilationInfo.cs
- FamilyCollection.cs
- SqlCharStream.cs
- XmlDeclaration.cs
- Util.cs
- MaterialCollection.cs
- StorageMappingItemLoader.cs
- MdiWindowListItemConverter.cs
- HtmlProps.cs
- serverconfig.cs
- _UncName.cs
- Identifier.cs
- NetMsmqSecurity.cs
- Deflater.cs
- EmptyControlCollection.cs
- ConstructorNeedsTagAttribute.cs
- CompiledAction.cs
- DebugTracing.cs
- mactripleDES.cs
- Matrix3DValueSerializer.cs
- PairComparer.cs
- WindowsProgressbar.cs
- XmlNamespaceMapping.cs
- BufferBuilder.cs
- CollectionViewGroupInternal.cs
- DynamicQueryableWrapper.cs
- ListControlDataBindingHandler.cs
- ListMarkerSourceInfo.cs
- PriorityItem.cs
- RichTextBox.cs
- Size.cs
- ErrorFormatterPage.cs
- LocationSectionRecord.cs
- DataGridCell.cs
- SpinWait.cs
- ImageAnimator.cs
- IndexedWhereQueryOperator.cs
- MailWebEventProvider.cs
- EventPropertyMap.cs
- HwndHost.cs
- TemplateXamlTreeBuilder.cs
- ViewgenContext.cs
- OrthographicCamera.cs
- FrameworkContextData.cs
- RoleServiceManager.cs
- DesignerAttribute.cs
- Attributes.cs
- ObjectQuery.cs
- HttpFileCollection.cs
- GenericEnumerator.cs
- ListItemCollection.cs
- WebEventCodes.cs
- EditorAttribute.cs
- DataReceivedEventArgs.cs
- ListDependantCardsRequest.cs
- CollaborationHelperFunctions.cs
- InlineUIContainer.cs
- Hex.cs
- Variant.cs
- OuterGlowBitmapEffect.cs
- NavigationFailedEventArgs.cs
- Axis.cs
- RotateTransform3D.cs
- VersionedStreamOwner.cs
- GenerateTemporaryTargetAssembly.cs
- TextBoxBase.cs
- RtfToXamlLexer.cs
- MenuItemCollection.cs
- PenThread.cs
- GridErrorDlg.cs
- PreviewPrintController.cs
- HttpModuleCollection.cs
- DetailsViewUpdateEventArgs.cs
- BindingListCollectionView.cs
- FrameworkElementFactoryMarkupObject.cs
- HostingEnvironment.cs
- RotateTransform.cs
- _HeaderInfoTable.cs
- HttpCacheParams.cs
- MultilineStringEditor.cs
- SimpleType.cs
- PathFigureCollectionConverter.cs
- XmlImplementation.cs
- X509ChainElement.cs
- ThreadNeutralSemaphore.cs
- HtmlInputButton.cs
- _SingleItemRequestCache.cs
- WorkflowExecutor.cs
- TextAnchor.cs
- DataTemplateKey.cs
- PropertyTab.cs
- AssemblyUtil.cs
- SafeNativeMethods.cs
- XmlNullResolver.cs
- InitializerFacet.cs
- RootAction.cs
- ApplicationInfo.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- ListBoxItemAutomationPeer.cs