Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ComAdminWrapper.cs
- ThaiBuddhistCalendar.cs
- SqlGatherConsumedAliases.cs
- CustomAssemblyResolver.cs
- CompilerError.cs
- ErasingStroke.cs
- RequestResizeEvent.cs
- ConnectionOrientedTransportManager.cs
- DataListGeneralPage.cs
- Identity.cs
- SqlUnionizer.cs
- DataSourceExpressionCollection.cs
- XmlCountingReader.cs
- PipelineModuleStepContainer.cs
- IncrementalReadDecoders.cs
- TailPinnedEventArgs.cs
- SubqueryTrackingVisitor.cs
- Deflater.cs
- VBCodeProvider.cs
- OperatorExpressions.cs
- ArcSegment.cs
- OleStrCAMarshaler.cs
- LinqTreeNodeEvaluator.cs
- Coordinator.cs
- TypeLoadException.cs
- PageHandlerFactory.cs
- XmlQueryRuntime.cs
- DBCSCodePageEncoding.cs
- DataListItem.cs
- ProtocolsConfiguration.cs
- HttpCachePolicyElement.cs
- PortCache.cs
- ApplicationFileCodeDomTreeGenerator.cs
- IdentityReference.cs
- ToolStripPanel.cs
- HtmlWindowCollection.cs
- AsyncPostBackErrorEventArgs.cs
- MetadataException.cs
- WebPartsSection.cs
- CodeMethodInvokeExpression.cs
- PictureBox.cs
- SoapFault.cs
- AxWrapperGen.cs
- SequentialWorkflowHeaderFooter.cs
- ToolStripHighContrastRenderer.cs
- AesManaged.cs
- TextTreeInsertUndoUnit.cs
- DrawingCollection.cs
- Style.cs
- COM2PropertyPageUITypeConverter.cs
- DataBoundControlAdapter.cs
- SqlGatherConsumedAliases.cs
- BasicKeyConstraint.cs
- AssemblySettingAttributes.cs
- SpotLight.cs
- LocationSectionRecord.cs
- While.cs
- XmlTextWriter.cs
- BaseDataBoundControl.cs
- StringReader.cs
- TextParaClient.cs
- WebBrowserContainer.cs
- Comparer.cs
- formatter.cs
- XmlSchemaException.cs
- IOThreadScheduler.cs
- NullPackagingPolicy.cs
- CodeConditionStatement.cs
- IntAverageAggregationOperator.cs
- RunClient.cs
- PointF.cs
- Asn1IntegerConverter.cs
- XhtmlConformanceSection.cs
- FastEncoder.cs
- DataBindingExpressionBuilder.cs
- FontNameEditor.cs
- TemplatedAdorner.cs
- MultilineStringConverter.cs
- MarshalDirectiveException.cs
- Trace.cs
- NotCondition.cs
- CodeNamespaceCollection.cs
- xml.cs
- IPipelineRuntime.cs
- AdjustableArrowCap.cs
- FixedSOMPage.cs
- PopupEventArgs.cs
- XmlIncludeAttribute.cs
- HtmlForm.cs
- ExtendedProperty.cs
- LogReservationCollection.cs
- SafeNativeMethods.cs
- CorrelationResolver.cs
- MemberPath.cs
- Latin1Encoding.cs
- LookupBindingPropertiesAttribute.cs
- NonClientArea.cs
- EventlogProvider.cs
- DictationGrammar.cs
- OperationCanceledException.cs