CompositeLogin.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace myControl
...{
[DefaultProperty("Text")]
[ToolboxData("<{0}:CompositeLogin runat='server'></{0}:CompositeLogin>")]
public class CompositeLogin : WebControl,INamingContainer
...{
Text attribute#region Text attribute
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
...{
get
...{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
...{
ViewState["Text"] = value;
}
}
#endregion
private TextBox _nameTextbox;
private TextBox _passwordTextbox;
private Label _nameLabel;
private Label _passwordLabel;
private Button _button;
private RequiredFieldValidator _namevalidator;
private RequiredFieldValidator _passwordValidator;
private static readonly object EventLogin = new object();

Override Properties#region Override Properties
public override ControlCollection Controls
...{
get
...{
EnsureChildControls();
return base.Controls;
}
}
#endregion Override Properties

Properties delegate to child controls#region Properties delegate to child controls
public string ButtonText
...{
get ...{
EnsureChildControls();
return _button.Text;
}
set ...{
EnsureChildControls();
this._button.Text = value;
}
}
public string Name
...{
get ...{
EnsureChildControls();
return this._nameTextbox.Text;
}
set ...{
this._nameTextbox.Text = value;
}
}
public string NameErrorMessage
...{
get ...{
EnsureChildControls();
return this._namevalidator.ErrorMessage;
}
set ...{
EnsureChildControls();
_namevalidator.ErrorMessage = value;
_namevalidator.ToolTip = value;
}
}
public string NameLabel
...{
get ...{
EnsureChildControls();
return this._nameLabel.Text;
}
set ...{
EnsureChildControls();
this._nameLabel.Text = value;
}
}
public string Password
...{
get ...{
EnsureChildControls();
return this._passwordTextbox.Text;
}
}
public string PasswordErrorMessage
...{
get ...{
EnsureChildControls();
return this._passwordValidator.ErrorMessage;
}
set ...{
EnsureChildControls();
this._passwordValidator.ErrorMessage = value;
this._passwordValidator.ToolTip = value;
}
}
public string PasswordLabel
...{
get ...{
EnsureChildControls();
return this._passwordLabel.Text;
}
set ...{
EnsureChildControls();
this._passwordLabel.Text = value;
}
}
#endregion

Event#region Event
public event EventHandler Login
...{
add ...{
Events.AddHandler(EventLogin, value);
}
remove ...{
Events.RemoveHandler(EventLogin, value);
}
}
protected virtual void OnLogion(EventArgs e)
...{
EventHandler onlogionEvent = (EventHandler)Events[EventLogin];
if (onlogionEvent != null)
...{
onlogionEvent(this, e);
}
}
//???????????????????????
protected override bool OnBubbleEvent(object source, EventArgs args)
...{
bool handled = false;
if (args is CommandEventArgs) ...{
CommandEventArgs ce=(CommandEventArgs)args;
if(ce.CommandName=="Logon")...{
OnLogion(EventArgs.Empty);
handled=true;
}
}
return handled;
}
//???????????????????????
#endregion

Override CreateChildControls#region Override CreateChildControls
protected override void CreateChildControls()
...{
base.CreateChildControls();
Controls.Clear();
_nameLabel = new Label();
_passwordLabel = new Label();
_nameTextbox = new TextBox();
_passwordTextbox = new TextBox();
_nameTextbox.ID = "nametextbox";
_passwordTextbox.ID = "pswtextbox";
_passwordTextbox.TextMode = TextBoxMode.Password;
_passwordValidator = new RequiredFieldValidator();
_namevalidator = new RequiredFieldValidator();
_passwordValidator.ID = "val1";
_passwordValidator.ControlToValidate = _passwordTextbox.ID;
_passwordValidator.Text = "*";
_passwordValidator.Display = ValidatorDisplay.Static;
_namevalidator.ID = "val2";
_namevalidator.ControlToValidate = _nameTextbox.ID;
_namevalidator.Text = "*";
_namevalidator.Display = ValidatorDisplay.Static;

_button = new Button();
_button.ID = "button1";
_button.CommandName = "Logon";
this.Controls.Add(_nameLabel);
this.Controls.Add(_passwordLabel);
this.Controls.Add(_nameTextbox);
this.Controls.Add(_passwordTextbox);
this.Controls.Add(_namevalidator);
this.Controls.Add(_passwordValidator);
this.Controls.Add(_button);
}
#endregion
Override Render#region Override Render
protected override void Render(HtmlTextWriter writer)
...{
//base.Render(writer);
AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "1", false);
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
_nameLabel.RenderControl(writer); //label name
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
_nameTextbox.RenderControl(writer); //textbox name
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
_namevalidator.RenderControl(writer); //*
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
_passwordLabel.RenderControl(writer); //label psw
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
_passwordTextbox.RenderControl(writer); //textbox psw
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
_passwordValidator.RenderControl(writer); //*
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
writer.AddAttribute(HtmlTextWriterAttribute.Align, "right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
_button.RenderControl(writer); //button submit
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
}
#endregion
}
}
样式如下:

//??????????内的方法不知道什么作用??
本文通过分析CompositeLogin.cs文件,探讨一个复合控件的实现,重点关注未知方法的功能解析,涉及textbox、string、button等元素以及对象交互和事件处理。
1906

被折叠的 条评论
为什么被折叠?



