Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / ControlHelper.cs / 1 / ControlHelper.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design { using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.CodeDom; using System.Runtime.InteropServices; using System.Collections.Generic; internal static class ControlHelper { ////// Finds a control with a given ID starting with the siblings of the given control. /// This method walk up naming container boundaries to find the control. /// internal static Control FindControl(IServiceProvider serviceProvider, Control control, string controlIdToFind) { if (String.IsNullOrEmpty(controlIdToFind)) { throw new ArgumentNullException("controlIdToFind"); } while (control != null) { if (control.Site == null || control.Site.Container == null) { return null; } IComponent component = control.Site.Container.Components[controlIdToFind]; if (component != null) { return component as Control; } // Try to get the parent of this control's naming container IDesignerHost designerHost = (IDesignerHost)control.Site.GetService(typeof(IDesignerHost)); if (designerHost == null) { return null; } ControlDesigner designer = designerHost.GetDesigner(control) as ControlDesigner; if (designer == null || designer.View == null || designer.View.NamingContainerDesigner == null) { return null; } control = designer.View.NamingContainerDesigner.Component as Control; } if (serviceProvider != null) { IDesignerHost host = (IDesignerHost)serviceProvider.GetService(typeof(IDesignerHost)); if (host != null) { IContainer container = host.Container; if (container != null) { return container.Components[controlIdToFind] as System.Web.UI.Control; } } } return null; } internal delegate bool IsValidComponentDelegate(IComponent component); internal static IListGetAllComponents(IComponent component, IsValidComponentDelegate componentFilter) { List foundComponents = new List (); while (component != null) { IList components = GetComponentsInContainer(component, componentFilter); foundComponents.AddRange(components); // Walk up to the naming container to get the next level of controls IDesignerHost designerHost = (IDesignerHost)component.Site.GetService(typeof(IDesignerHost)); ControlDesigner designer = designerHost.GetDesigner(component) as ControlDesigner; component = null; if (designer != null && designer.View != null && designer.View.NamingContainerDesigner != null) { component = designer.View.NamingContainerDesigner.Component; } } return foundComponents; } private static IList GetComponentsInContainer(IComponent component, IsValidComponentDelegate componentFilter) { System.Diagnostics.Debug.Assert(component != null); List foundComponents = new List (); if ((component.Site != null) && (component.Site.Container != null)) { foreach (IComponent comp in component.Site.Container.Components) { if (componentFilter(comp) && !Marshal.IsComObject(comp)) { PropertyDescriptor modifierProp = TypeDescriptor.GetProperties(comp)["Modifiers"]; if (modifierProp != null) { MemberAttributes modifiers = (MemberAttributes)modifierProp.GetValue(comp); if ((modifiers & MemberAttributes.AccessMask) == MemberAttributes.Private) { // must be declared as public or protected continue; } } foundComponents.Add(comp); } } } return foundComponents; } } } // 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
- CompiledWorkflowDefinitionContext.cs
- CollectionViewProxy.cs
- SQLBinaryStorage.cs
- Image.cs
- CodeExporter.cs
- MediaElement.cs
- ContentType.cs
- HtmlTableCell.cs
- BaseProcessProtocolHandler.cs
- ValidationError.cs
- ChtmlSelectionListAdapter.cs
- StyleHelper.cs
- SafeBitVector32.cs
- Trigger.cs
- TrackingMemoryStreamFactory.cs
- WebReferencesBuildProvider.cs
- CodeGenerator.cs
- pingexception.cs
- BasicSecurityProfileVersion.cs
- Convert.cs
- CatalogPartCollection.cs
- RuntimeWrappedException.cs
- GridViewRow.cs
- GroupJoinQueryOperator.cs
- EmbeddedMailObjectsCollection.cs
- DataGridItemCollection.cs
- ListenerAdapter.cs
- ButtonFieldBase.cs
- ResourceDisplayNameAttribute.cs
- SystemUdpStatistics.cs
- ScaleTransform.cs
- RecognizeCompletedEventArgs.cs
- XmlObjectSerializerContext.cs
- Vector3dCollection.cs
- DataFieldEditor.cs
- CommandValueSerializer.cs
- RoutedEventArgs.cs
- Opcode.cs
- TimeSpan.cs
- DynamicDiscoveryDocument.cs
- StringDictionary.cs
- MSHTMLHost.cs
- DataShape.cs
- WizardStepCollectionEditor.cs
- StickyNoteContentControl.cs
- Transform3D.cs
- EpmContentDeSerializer.cs
- MenuItemCollection.cs
- MemberHolder.cs
- WSTrustDec2005.cs
- ProfileServiceManager.cs
- XmlWriterSettings.cs
- ExpressionBindingCollection.cs
- DataException.cs
- EdmProperty.cs
- HttpConfigurationContext.cs
- ParameterBuilder.cs
- HostProtectionPermission.cs
- dataprotectionpermissionattribute.cs
- WebPartConnectionsCancelVerb.cs
- WebPartRestoreVerb.cs
- DialogWindow.cs
- MouseEvent.cs
- SimpleBitVector32.cs
- FixedDocument.cs
- DropShadowBitmapEffect.cs
- ExpressionCopier.cs
- DependentTransaction.cs
- TdsParserStaticMethods.cs
- DelayLoadType.cs
- GlyphCache.cs
- TaskFileService.cs
- WebServiceResponseDesigner.cs
- ToolStripPanelCell.cs
- EntityDataSourceEntitySetNameItem.cs
- SByteStorage.cs
- TableParaClient.cs
- ExceptionRoutedEventArgs.cs
- _BufferOffsetSize.cs
- HotSpot.cs
- TrackingProfileSerializer.cs
- TextEditorParagraphs.cs
- IxmlLineInfo.cs
- SystemTcpStatistics.cs
- DataViewSettingCollection.cs
- PenContext.cs
- WhitespaceRuleLookup.cs
- UnsafeCollabNativeMethods.cs
- ProtocolsConfiguration.cs
- TypedTableBase.cs
- LayoutManager.cs
- HtmlWindowCollection.cs
- relpropertyhelper.cs
- UnknownWrapper.cs
- BCLDebug.cs
- SectionVisual.cs
- EffectiveValueEntry.cs
- SHA256Managed.cs
- CreateUserWizardStep.cs
- ISAPIRuntime.cs