Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / ComponentModel / COM2Interop / COM2ComponentEditor.cs / 1305376 / 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.
//
//-----------------------------------------------------------------------------
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConfigurationPropertyAttribute.cs
- MailDefinition.cs
- ScrollItemPattern.cs
- ClientCultureInfo.cs
- ObjectViewQueryResultData.cs
- XsltSettings.cs
- contentDescriptor.cs
- BStrWrapper.cs
- DeviceContexts.cs
- ComboBoxAutomationPeer.cs
- AttributeEmitter.cs
- CannotUnloadAppDomainException.cs
- LinkedResourceCollection.cs
- LicenseContext.cs
- TextChange.cs
- CatalogUtil.cs
- ResetableIterator.cs
- QueryReaderSettings.cs
- DataGridViewCellParsingEventArgs.cs
- UTF8Encoding.cs
- StructuredProperty.cs
- SafeArrayRankMismatchException.cs
- DataGridViewRowCancelEventArgs.cs
- TemplateXamlParser.cs
- TextElementCollectionHelper.cs
- CodeDelegateInvokeExpression.cs
- IdentityNotMappedException.cs
- TextTreeRootNode.cs
- UidManager.cs
- WebHttpBindingElement.cs
- EncodingDataItem.cs
- LockingPersistenceProvider.cs
- CacheDependency.cs
- SourceChangedEventArgs.cs
- IdnMapping.cs
- ContainerControl.cs
- BrowserCapabilitiesCompiler.cs
- RootBrowserWindowProxy.cs
- BamlLocalizer.cs
- StringDictionary.cs
- Assembly.cs
- TextEditor.cs
- ControlSerializer.cs
- ListViewItemSelectionChangedEvent.cs
- SymbolMethod.cs
- EpmContentSerializerBase.cs
- FileAuthorizationModule.cs
- Pkcs7Signer.cs
- xmlfixedPageInfo.cs
- ConfigXmlReader.cs
- RemotingHelper.cs
- UIElementCollection.cs
- CodeSubDirectory.cs
- SqlDataSourceView.cs
- Vector.cs
- remotingproxy.cs
- ClientBuildManager.cs
- WmiEventSink.cs
- WebPartTransformerAttribute.cs
- EncryptedType.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- PropertyPathWorker.cs
- TypeSystemHelpers.cs
- SqlComparer.cs
- CodeVariableDeclarationStatement.cs
- ListViewHitTestInfo.cs
- DataGridViewButtonColumn.cs
- ActivityDesigner.cs
- Rfc2898DeriveBytes.cs
- RemoteArgument.cs
- DbProviderFactoriesConfigurationHandler.cs
- HandledMouseEvent.cs
- RegexMatch.cs
- DataFormats.cs
- RequestFactory.cs
- NativeWrapper.cs
- MediaContext.cs
- EntityUtil.cs
- WebEventTraceProvider.cs
- Queue.cs
- Convert.cs
- DataListItemEventArgs.cs
- Utils.cs
- TileBrush.cs
- CompatibleComparer.cs
- PointIndependentAnimationStorage.cs
- TypeToArgumentTypeConverter.cs
- DoWorkEventArgs.cs
- ConfigurationElement.cs
- CheckBoxBaseAdapter.cs
- MetabaseServerConfig.cs
- Scene3D.cs
- SqlNodeAnnotations.cs
- GlyphingCache.cs
- MimeXmlImporter.cs
- securitycriticaldataformultiplegetandset.cs
- InstanceDataCollectionCollection.cs
- XpsS0ValidatingLoader.cs
- ProjectionPlan.cs
- XmlWriterTraceListener.cs