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
- ListMarkerSourceInfo.cs
- DBSqlParserTableCollection.cs
- KeyInstance.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- CodeAttributeDeclarationCollection.cs
- RegisteredHiddenField.cs
- HttpCookiesSection.cs
- ToggleButton.cs
- DefaultTextStore.cs
- PeerApplication.cs
- FileUpload.cs
- TabletCollection.cs
- Geometry3D.cs
- BitmapMetadataBlob.cs
- ApplicationActivator.cs
- HttpPostServerProtocol.cs
- ThousandthOfEmRealDoubles.cs
- BrowserCapabilitiesCompiler.cs
- IPHostEntry.cs
- RefreshPropertiesAttribute.cs
- SafeFileMappingHandle.cs
- ServiceControllerDesigner.cs
- ControlParameter.cs
- InputLanguageCollection.cs
- SingleConverter.cs
- InternalResources.cs
- IChannel.cs
- WebPartsPersonalization.cs
- EventSourceCreationData.cs
- Part.cs
- JoinGraph.cs
- CounterSetInstanceCounterDataSet.cs
- XsltArgumentList.cs
- TableItemProviderWrapper.cs
- Marshal.cs
- IPCCacheManager.cs
- SocketElement.cs
- DataControlFieldCollection.cs
- MenuItemAutomationPeer.cs
- RoleGroupCollection.cs
- OdbcRowUpdatingEvent.cs
- TreeViewCancelEvent.cs
- ColorKeyFrameCollection.cs
- SqlDuplicator.cs
- ComEventsMethod.cs
- XMLDiffLoader.cs
- DbConnectionHelper.cs
- SQLRoleProvider.cs
- METAHEADER.cs
- DocumentGridPage.cs
- Decoder.cs
- MenuScrollingVisibilityConverter.cs
- ObjectSerializerFactory.cs
- XmlSchemaObject.cs
- ContentType.cs
- PeerInvitationResponse.cs
- CellTreeNodeVisitors.cs
- Token.cs
- XPathDocumentBuilder.cs
- While.cs
- CheckBox.cs
- MessageQueueConverter.cs
- DBDataPermission.cs
- SqlCacheDependencyDatabase.cs
- CustomMenuItemCollection.cs
- IFlowDocumentViewer.cs
- OverflowException.cs
- SqlUDTStorage.cs
- SchemaCompiler.cs
- PrivilegedConfigurationManager.cs
- EncoderExceptionFallback.cs
- UnsafeNativeMethods.cs
- MergeFailedEvent.cs
- MetaTableHelper.cs
- UrlParameterReader.cs
- Rotation3DKeyFrameCollection.cs
- TableLayoutSettingsTypeConverter.cs
- DataContext.cs
- CombinedTcpChannel.cs
- ServiceDescriptionReflector.cs
- EdmFunction.cs
- MemberRelationshipService.cs
- IsolatedStorageFileStream.cs
- EraserBehavior.cs
- TypeDependencyAttribute.cs
- RandomNumberGenerator.cs
- GridViewRow.cs
- TextDecoration.cs
- XmlSchemaGroup.cs
- HwndPanningFeedback.cs
- ObjectDataProvider.cs
- MatrixStack.cs
- GlobalItem.cs
- Listbox.cs
- SamlSecurityTokenAuthenticator.cs
- EventPrivateKey.cs
- XmlWriterSettings.cs
- UpdateInfo.cs
- EntityWrapper.cs
- ExpressionBuilder.cs