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
- RegionData.cs
- MinimizableAttributeTypeConverter.cs
- Function.cs
- UserPreferenceChangingEventArgs.cs
- WebScriptMetadataMessage.cs
- tooltip.cs
- SslStreamSecurityElement.cs
- ProtocolViolationException.cs
- ClearCollection.cs
- DirtyTextRange.cs
- HostProtectionException.cs
- MemoryFailPoint.cs
- SectionUpdates.cs
- TextEffectCollection.cs
- ScrollContentPresenter.cs
- StructuredTypeInfo.cs
- ScaleTransform3D.cs
- MessagePartProtectionMode.cs
- RegistrationProxy.cs
- GridItem.cs
- LinqDataSourceUpdateEventArgs.cs
- TextSerializer.cs
- TitleStyle.cs
- CodeParameterDeclarationExpressionCollection.cs
- ConstraintStruct.cs
- WriteTimeStream.cs
- _PooledStream.cs
- VSWCFServiceContractGenerator.cs
- VarRefManager.cs
- SelectionProcessor.cs
- FileDialog_Vista_Interop.cs
- ContentPathSegment.cs
- EventDescriptorCollection.cs
- LicenseContext.cs
- SqlDataSourceCache.cs
- EventlogProvider.cs
- EncoderBestFitFallback.cs
- XmlSchemaComplexType.cs
- QueryActivatableWorkflowsCommand.cs
- InternalCache.cs
- updatecommandorderer.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- oledbmetadatacolumnnames.cs
- OletxTransactionManager.cs
- HostProtectionPermission.cs
- ProcessInfo.cs
- ProcessHostServerConfig.cs
- Point4D.cs
- CommandBindingCollection.cs
- LowerCaseStringConverter.cs
- SchemaImporterExtension.cs
- VectorCollection.cs
- OracleParameterCollection.cs
- CollectionEditVerbManager.cs
- DataPagerFieldCommandEventArgs.cs
- _IPv6Address.cs
- GeneralTransform.cs
- ReceiveContent.cs
- IsolatedStorage.cs
- MatrixAnimationUsingPath.cs
- ToolboxBitmapAttribute.cs
- WpfMemberInvoker.cs
- HtmlInputSubmit.cs
- Helper.cs
- CodeDelegateCreateExpression.cs
- designeractionbehavior.cs
- StrokeDescriptor.cs
- AppSecurityManager.cs
- TextBoxView.cs
- IItemContainerGenerator.cs
- BordersPage.cs
- LinkArea.cs
- EmptyStringExpandableObjectConverter.cs
- UnsignedPublishLicense.cs
- Propagator.ExtentPlaceholderCreator.cs
- OrderedDictionary.cs
- Trigger.cs
- CompilationPass2TaskInternal.cs
- ComponentResourceKey.cs
- ProxyRpc.cs
- Serialization.cs
- UTF32Encoding.cs
- webeventbuffer.cs
- HttpStaticObjectsCollectionWrapper.cs
- _Events.cs
- TripleDESCryptoServiceProvider.cs
- WebBrowserHelper.cs
- ZipPackagePart.cs
- SiteMapNodeCollection.cs
- Simplifier.cs
- EntityDataSourceWrapper.cs
- DataContext.cs
- SecureUICommand.cs
- DecoderNLS.cs
- StaticSiteMapProvider.cs
- EventDescriptorCollection.cs
- _AutoWebProxyScriptWrapper.cs
- AnchorEditor.cs
- AnimationClockResource.cs
- HelpEvent.cs