TextControlDesigner.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / TextControlDesigner.cs / 1 / TextControlDesigner.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.UI.Design { 
 
    using System;
    using System.ComponentModel; 
    using System.ComponentModel.Design;
    using System.Globalization;
    using System.Diagnostics;
    using System.IO; 
    using System.Reflection;
    using System.Text; 
    using System.Web.UI; 

    ///  
    /// 
    ///    
    ///       This designer can be used for controls which provide a Text property that
    ///       is persisted as inner text. An example of such as control is the 
    ///       System.Web.UI.WebControls.Label class. This designer ensures that the
    ///       Text property is set to some default value to ensure design-time visibility 
    ///       while preserving the children collection intact. It also ensures correct 
    ///       persistence of inner contents in both scenarios: inner text and child controls.
    ///     
    /// 
    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
    public class TextControlDesigner : ControlDesigner {
 
        /// 
        public override string GetDesignTimeHtml() { 
            Control control = ViewControl; 

            PropertyInfo textPropInfo = control.GetType().GetProperty("Text"); 
            string originalText = (string)textPropInfo.GetValue(control, null);
            bool blank = (originalText == null) || (originalText.Length == 0);

            bool hasControls = control.HasControls(); 
            Control[] children = null;
 
            if (blank) { 
                if (hasControls) {
                    children = new Control[control.Controls.Count]; 
                    control.Controls.CopyTo(children, 0);
                }
                textPropInfo.SetValue(control, "[" + control.ID + "]", null);
            } 

            string html; 
            try { 
                html = base.GetDesignTimeHtml();
            } 
            finally {
                if (blank) {
                    textPropInfo.SetValue(control, originalText, null);
                    if (hasControls) { 
                        foreach (Control c in children) {
                            control.Controls.Add(c); 
                        } 
                    }
                } 
            }

            return html;
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK