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
- PageStatePersister.cs
- RequestCacheManager.cs
- CacheAxisQuery.cs
- CatalogPartChrome.cs
- StorageComplexPropertyMapping.cs
- Comparer.cs
- BindToObject.cs
- CacheDependency.cs
- Application.cs
- ResourceReferenceExpressionConverter.cs
- InvalidFilterCriteriaException.cs
- StringCollectionMarkupSerializer.cs
- AuthenticateEventArgs.cs
- FontFaceLayoutInfo.cs
- WindowPatternIdentifiers.cs
- RemoteDebugger.cs
- BrushConverter.cs
- CatalogPartCollection.cs
- TwoPhaseCommitProxy.cs
- IImplicitResourceProvider.cs
- OracleInternalConnection.cs
- LocalizabilityAttribute.cs
- BamlWriter.cs
- GeometryDrawing.cs
- SizeIndependentAnimationStorage.cs
- RegexWriter.cs
- CodeConstructor.cs
- Rotation3DKeyFrameCollection.cs
- OuterGlowBitmapEffect.cs
- NullableDecimalMinMaxAggregationOperator.cs
- HtmlForm.cs
- PlanCompilerUtil.cs
- VisualStyleInformation.cs
- WrappedDispatcherException.cs
- ProcessStartInfo.cs
- NonVisualControlAttribute.cs
- CustomAttribute.cs
- DES.cs
- PagerSettings.cs
- EventLogPermissionHolder.cs
- GenericEnumerator.cs
- BaseAsyncResult.cs
- AttributeCollection.cs
- PopupEventArgs.cs
- SolidColorBrush.cs
- Attributes.cs
- XPathParser.cs
- x509store.cs
- MarkerProperties.cs
- XmlDataSourceDesigner.cs
- AssociationSetEnd.cs
- EventWaitHandleSecurity.cs
- DeferredReference.cs
- GZipUtils.cs
- SqlMethodAttribute.cs
- PointUtil.cs
- TcpHostedTransportConfiguration.cs
- XmlToDatasetMap.cs
- ToolStripItemEventArgs.cs
- XmlAnyAttributeAttribute.cs
- ISAPIRuntime.cs
- EventDescriptorCollection.cs
- PtsHelper.cs
- SamlAuthorizationDecisionStatement.cs
- TextStore.cs
- Transform.cs
- HttpRawResponse.cs
- TabControlDesigner.cs
- MultipleViewPatternIdentifiers.cs
- SocketInformation.cs
- AppSettingsExpressionBuilder.cs
- StateChangeEvent.cs
- ListenerElementsCollection.cs
- SourceFilter.cs
- SchemaImporterExtensionElement.cs
- ClientSideProviderDescription.cs
- CodeTypeReferenceCollection.cs
- StringConverter.cs
- ButtonField.cs
- ParserStreamGeometryContext.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- HwndSource.cs
- HttpCachePolicy.cs
- __Error.cs
- HttpConfigurationSystem.cs
- AttributeCollection.cs
- RuleSetDialog.Designer.cs
- SortQuery.cs
- BindingList.cs
- EntityDataSourceDataSelection.cs
- XmlWriterTraceListener.cs
- XmlProcessingInstruction.cs
- SqlConnectionString.cs
- FontFamily.cs
- FontFamily.cs
- XmlIlGenerator.cs
- KeyedCollection.cs
- Vector3DConverter.cs
- RegexCode.cs
- DesignerLabelAdapter.cs