#region private fields
        private Button button;
        private TextBox nameTextBox;
        private Label nameLabel;
        private TextBox pwdTextBox;
        private Label pwsLable;
        private RequiredFieldValidator nameRequire;
        private RequiredFieldValidator pwdRequire;        private static readonly object EventLogon = new object();
        #endregion        #region override ControlCollection Controls
        public override ControlCollection Controls
        {
            get
            {
                EnsureChildControls();
                return base.Controls;
            }
        }
        #endregion        #region Properties        #region ButtonText
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Description("")]
        public string ButtonText
        {
            get
            {
                EnsureChildControls();
                return button.Text;
            }
            set
            {
                EnsureChildControls();
                button.Text = value;
            }
        }
        #endregion        #endregion        #region events
        [Category("Action")]
        public event EventHandler Logon
        {
            add
            {
                Events.AddHandler(EventLogon, value);
            }
            remove
            {
                Events.RemoveHandler(EventLogon, value);
            }
        }
        protected virtual void OnLogon(EventArgs e)
        {
            EventHandler logonHandler = (EventHandler)Events[EventLogon];
            if (logonHandler != null)
            {
                logonHandler(this, e);
            }
        }
        #endregion        #region Event bubbling
        protected override bool OnBubbleEvent(object source, EventArgs e)
        {
            bool handled = false;
            if (e is CommandEventArgs)
            {
                CommandEventArgs ce = (CommandEventArgs)e;
                if (ce.CommandName == "Logon")
                {
                    OnLogon(EventArgs.Empty);
                    handled = true;
                }
            }
            return handled;
        }
        #endregion        #region Override method
        #region CreateChildControls
        protected override void CreateChildControls()
        {
            Controls.Clear();
            nameLabel = new Label();            nameTextBox = new TextBox();
            nameTextBox.ID = "nameTextBox";            nameRequire = new RequiredFieldValidator();
            nameRequire.ID = "reqName";
            nameRequire.ControlToValidate = nameTextBox.ID;
            nameRequire.Text = "*";            pwsLable = new Label();            pwdTextBox = new TextBox();
            pwdTextBox.ID = "pwdTextBox";            pwdRequire = new RequiredFieldValidator();
            pwdRequire.ID = "reqPWD";
            pwdRequire.ControlToValidate = pwdTextBox.ID;
            pwdRequire.Text = "*";            button = new Button();
            button.ID = "button";
            button.CommandName = "Logon";
            button.Text = "Logon";            this.Controls.Add(nameLabel);
            this.Controls.Add(nameTextBox);
            this.Controls.Add(nameRequire);
            this.Controls.Add(pwsLable);
            this.Controls.Add(pwdTextBox);
            this.Controls.Add(pwdRequire);
            this.Controls.Add(button);
        }
        #endregion        protected override void Render(HtmlTextWriter writer)
        {
            AddAttributesToRender(writer);
            nameLabel.RenderControl(writer);
            nameTextBox.RenderControl(writer);
            nameRequire.RenderControl(writer);            pwsLable.RenderControl(writer);
            pwdTextBox.RenderControl(writer);
            pwdRequire.RenderControl(writer);            button.RenderControl(writer);
        }
        #endregion