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
- Funcletizer.cs
- OracleColumn.cs
- SystemIcons.cs
- MailMessage.cs
- LineMetrics.cs
- TypeResolvingOptions.cs
- DiagnosticsConfiguration.cs
- HtmlGenericControl.cs
- BlobPersonalizationState.cs
- DesignerActionMethodItem.cs
- Matrix3DValueSerializer.cs
- SqlMethodAttribute.cs
- RtfControlWordInfo.cs
- HiddenField.cs
- EntityDataSourceDesigner.cs
- _NestedMultipleAsyncResult.cs
- CodeCommentStatementCollection.cs
- FileIOPermission.cs
- EntityDataSourceDesignerHelper.cs
- NameValuePair.cs
- InvalidEnumArgumentException.cs
- DetailsViewUpdatedEventArgs.cs
- GrammarBuilder.cs
- RoutedCommand.cs
- DataControlImageButton.cs
- Stroke.cs
- ThreadInterruptedException.cs
- ObjectFullSpanRewriter.cs
- WebPartHeaderCloseVerb.cs
- OracleInternalConnection.cs
- InvalidDataException.cs
- SkewTransform.cs
- SqlError.cs
- AutomationPropertyInfo.cs
- RankException.cs
- RawStylusInput.cs
- AtomMaterializer.cs
- Roles.cs
- BaseTemplateBuildProvider.cs
- SamlDoNotCacheCondition.cs
- ClientBuildManager.cs
- Int32EqualityComparer.cs
- Parameter.cs
- StrokeCollectionConverter.cs
- Fault.cs
- DataRelationCollection.cs
- CharStorage.cs
- DecimalFormatter.cs
- OpenTypeLayoutCache.cs
- MediaElementAutomationPeer.cs
- GridViewUpdateEventArgs.cs
- VectorValueSerializer.cs
- InkSerializer.cs
- CustomPopupPlacement.cs
- RecommendedAsConfigurableAttribute.cs
- Debug.cs
- OdbcCommandBuilder.cs
- CngKeyCreationParameters.cs
- TextEditorSpelling.cs
- XPathDescendantIterator.cs
- QueryInterceptorAttribute.cs
- SizeValueSerializer.cs
- AesManaged.cs
- TextCharacters.cs
- TextTrailingCharacterEllipsis.cs
- ColorMatrix.cs
- GeometryGroup.cs
- SchemaType.cs
- CreatingCookieEventArgs.cs
- Rect.cs
- ClientType.cs
- HashRepartitionEnumerator.cs
- StateManagedCollection.cs
- GAC.cs
- DocumentEventArgs.cs
- formatstringdialog.cs
- CategoryAttribute.cs
- GridPatternIdentifiers.cs
- Missing.cs
- ActivityBuilderHelper.cs
- RSAPKCS1KeyExchangeFormatter.cs
- ToolStripActionList.cs
- Filter.cs
- PipeSecurity.cs
- ObjectComplexPropertyMapping.cs
- SQLMoneyStorage.cs
- PageMediaType.cs
- ApplicationInfo.cs
- ComponentConverter.cs
- GeneralTransform3DGroup.cs
- System.Data_BID.cs
- Invariant.cs
- FillRuleValidation.cs
- SystemIPInterfaceProperties.cs
- CodeSnippetTypeMember.cs
- ListItemParagraph.cs
- TransformPattern.cs
- ForeignKeyConstraint.cs
- TargetInvocationException.cs
- LineSegment.cs