您的位置:首页 > 其它

web控件开发系列(五) 控件事件

2009-09-17 11:09 471 查看
控件在WEB开发时经常要用到,虽然有部分已经存在工具箱里,但有时总需要根据自己的要求,开发一些合适自己的控件。接上一节,已经说过了控件的属性,下面来说一下,控件里面究竟怎样定义事件呢? 首先,大家都知道,控件里面的子控件可能会有需要事件,也就是子控件在事件中处理业务流程,还有就是控件本身就需要事件,像button那样,有常用的click事件,那么我们自定义的控件是否有需要这方面的事件存在呢?如果需要应该怎样添加呢?下面介绍一下,控件里面子控件的事件,例如我们在web页面上需要一个简单计数器给用户进行+ - * /这四个操作,下面介绍一下实现的代码,在ServerControl里面添加一个Caler的类。

Code
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace ServerControl
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:userRegister runat=server></{0}:userRegister>")]
public class userRegister : CompositeControl
{
#region Conrol
private Label lbU;
private Label lbP;
private Label lbCheckName;
private Label lbCheck;
private Label lbError;
private TextBox userName;
private TextBox passWord;
private TextBox check;
private Button btnLogin;
private Button btnClear;
private RegularExpressionValidator userNameRev;
private RegularExpressionValidator passWordRev;
#endregion

#region settingControl
[Category("LabelTextBox")] //登陆按钮名称
[Description("登陆按钮信息显示")]
public string btnLoginTitle
{
get
{
this.EnsureChildControls();
return this.btnLogin.Text;
}
set
{
this.EnsureChildControls();
this.btnLogin.Text = value;
}
}

[Category("LabelTextBox")]
[Description("登陆按钮的宽度")]
public Unit btnLoginWidth
{
get
{
this.EnsureChildControls();
return this.btnLogin.Width;
}
set
{
this.EnsureChildControls();
this.btnLogin.Width = value;
}
}

[Category("LabelTextBox")]
[Description("登陆按钮的宽度")]
public Unit btnLoginHeight
{
get
{
this.EnsureChildControls();
return this.btnLogin.Height;
}
set
{
this.EnsureChildControls();
this.btnLogin.Height = value;
}
}

[Category("LabelTextBox")] //取消按钮名称
[Description("取消按钮信息显示")]
public string btnClearTitle
{
get
{
this.EnsureChildControls();
return this.btnClear.Text;
}
set
{
this.EnsureChildControls();
this.btnClear.Text = value;
}
}

[Category("LabelTextBox")]
[Description("取消按钮的宽度")]
public Unit btnClearWidth
{
get
{
this.EnsureChildControls();
return this.btnClear.Width;
}
set
{
this.EnsureChildControls();
this.btnClear.Width = value;
}
}

[Category("LabelTextBox")]
[Description("取消按钮的宽度")]
public Unit btnClearHeight
{
get
{
this.EnsureChildControls();
return this.btnClear.Height;
}
set
{
this.EnsureChildControls();
this.btnClear.Height = value;
}
}

[Category("LabelTextBox")] //账号显示名称
[Description("账号标签信息显示")]
public string lbUTitle
{
get
{
this.EnsureChildControls();
return this.lbU.Text;
}
set
{
this.EnsureChildControls();
this.lbU.Text = value;
}
}

[Category("LabelTextBox")]
[Description("账号标签的宽度")]
public Unit lbUWitdth
{
get
{
this.EnsureChildControls();
return this.lbU.Width;
}
set
{
this.EnsureChildControls();
this.lbU.Width = value;
}
}

[Category("LabelTextBox")]
[Description("账号标签的高度")]
public Unit lbUHeight
{
get
{
this.EnsureChildControls();
return this.lbU.Height;
}
set
{
this.EnsureChildControls();
this.lbU.Height = value;
}
}

[Category("LabelTextBox")] //密码显示名称
[Description("密码标签信息显示")]
public string lbPTitle
{
get
{
this.EnsureChildControls();
return this.lbP.Text;
}
set
{
this.EnsureChildControls();
this.lbP.Text = value;
}
}

[Category("LabelTextBox")]
[Description("密码标签的宽度")]
public Unit lbPWitdth
{
get
{
this.EnsureChildControls();
return this.lbP.Width;
}
set
{
this.EnsureChildControls();
this.lbP.Width = value;
}
}

[Category("LabelTextBox")]
[Description("密码标签的高度")]
public Unit lbPHeight
{
get
{
this.EnsureChildControls();
return this.lbP.Height;
}
set
{
this.EnsureChildControls();
this.lbP.Height = value;
}
}

[Category("LabelTextBox")] //验证显示名称
[Description("验证标签信息显示")]
public string lbCheckTitle
{
get
{
this.EnsureChildControls();
return this.lbCheck.Text;
}
set
{
this.EnsureChildControls();
this.lbCheck.Text = value;
}
}

[Category("LabelTextBox")]
[Description("验证标签的宽度")]
public Unit lbCheckWitdth
{
get
{
this.EnsureChildControls();
return this.lbCheck.Width;
}
set
{
this.EnsureChildControls();
this.lbCheck.Width = value;
}
}

[Category("LabelTextBox")]
[Description("验证标签的高度")]
public Unit lbCheckHeight
{
get
{
this.EnsureChildControls();
return this.lbCheck.Height;
}
set
{
this.EnsureChildControls();
this.lbCheck.Height = value;
}
}

[Category("LabelTextBox")] //验证显示名称
[Description("验证名称标签信息显示")]
public string lbCheckNameTitle
{
get
{
this.EnsureChildControls();
return this.lbCheckName.Text;
}
set
{
this.EnsureChildControls();
this.lbCheckName.Text = value;
}
}

[Category("LabelTextBox")]
[Description("验证名称标签的宽度")]
public Unit lbCheckNameWitdth
{
get
{
this.EnsureChildControls();
return this.lbCheckName.Width;
}
set
{
this.EnsureChildControls();
this.lbCheckName.Width = value;
}
}

[Category("LabelTextBox")]
[Description("验证名称标签的高度")]
public Unit lbCheckNameHeight
{
get
{
this.EnsureChildControls();
return this.lbCheckName.Height;
}
set
{
this.EnsureChildControls();
this.lbCheckName.Height = value;
}
}

[Category("LabelTextBox")] //错误显示名称
[Description("错误标签信息显示")]
public string lbErrorTitle
{
get
{
this.EnsureChildControls();
return this.lbError.Text;
}
set
{
this.EnsureChildControls();
this.lbError.Text = value;
}
}

[Category("LabelTextBox")]
[Description("错误标签的宽度")]
public Unit lbErrorWitdth
{
get
{
this.EnsureChildControls();
return this.lbError.Width;
}
set
{
this.EnsureChildControls();
this.lbError.Width = value;
}
}

[Category("LabelTextBox")]
[Description("错误标签的高度")]
public Unit lbErrorHeight
{
get
{
this.EnsureChildControls();
return this.lbError.Height;
}
set
{
this.EnsureChildControls();
this.lbError.Height = value;
}
}

[Category("LabelTextBox")]
[Description("错误标签的高度")]
public Color lbErrorFontColor
{
get
{
this.EnsureChildControls();
return this.lbError.ForeColor;
}
set
{
this.EnsureChildControls();
this.lbError.ForeColor = value;
}
}

[Category("LabelTextBox")] //账号
[Description("账户号码")]
public string userNameValue
{
get
{
this.EnsureChildControls();
return this.userName.Text;
}
set
{
this.EnsureChildControls();
this.userName.Text = value;
}
}

[Category("LabelTextBox")]
[Description("账号文本框宽度")]
public Unit userNameWitdth
{
get
{
this.EnsureChildControls();
return this.userName.Width;
}
set
{
this.EnsureChildControls();
this.userName.Width = value;
}
}

[Category("LabelTextBox")]
[Description("账号文本框高度")]
public Unit userNameHeight
{
get
{
this.EnsureChildControls();
return this.userName.Height;
}
set
{
this.EnsureChildControls();
this.userName.Height = value;
}
}

[Category("LabelTextBox")] //验证码
[Description("验证码文本")]
public string checkValue
{
get
{
this.EnsureChildControls();
return this.check.Text;
}
set
{
this.EnsureChildControls();
this.check.Text = value;
}
}

[Category("LabelTextBox")]
[Description("验证码文本框宽度")]
public Unit checkWitdth
{
get
{
this.EnsureChildControls();
return this.check.Width;
}
set
{
this.EnsureChildControls();
this.check.Width = value;
}
}

[Category("LabelTextBox")]
[Description("验证码文本框高度")]
public Unit checkHeight
{
get
{
this.EnsureChildControls();
return this.check.Height;
}
set
{
this.EnsureChildControls();
this.check.Height = value;
}
}

[Category("Security")] //密码
[Description("密码")]
[PasswordPropertyText(true)]
public string passWordValue
{
get
{
this.EnsureChildControls();
return this.passWord.Text;
}
set
{
this.EnsureChildControls();
this.passWord.Text = value;
}
}

[Category("LabelTextBox")]
[Description("密码文本框宽度")]
public Unit passWordWitdth
{
get
{
this.EnsureChildControls();
return this.passWord.Width;
}
set
{
this.EnsureChildControls();
this.passWord.Width = value;
}
}

[Category("LabelTextBox")]
[Description("密码文本框高度")]
public Unit passWordHeight
{
get
{
this.EnsureChildControls();
return this.passWord.Height;
}
set
{
this.EnsureChildControls();
this.passWord.Height = value;
}
}

[Category("LabelTextBox")] //表达式
[Description("验证表账号达式")]
public string userNameValidateExpression
{
get
{
this.EnsureChildControls();
return userNameRev.ValidationExpression;
}
set
{
this.EnsureChildControls();
this.userNameRev.ValidationExpression = value;
}
}

[Category("LabelTextBox")]
[Description("验证账号错误提示")]
public string userNameErrorMessage
{
get
{
this.EnsureChildControls();
return userNameRev.ErrorMessage;
}
set
{
this.EnsureChildControls();
this.userNameRev.ErrorMessage = value;
}
}

[Category("LabelTextBox")]
[Description("验证表账号达式")]
public string passWordValidateExpression
{
get
{
this.EnsureChildControls();
return passWordRev.ValidationExpression;
}
set
{
this.EnsureChildControls();
this.passWordRev.ValidationExpression = value;
}
}

[Category("LabelTextBox")]
[Description("验证账号错误提示")]
public string passWordErrorMessage
{
get
{
this.EnsureChildControls();
return passWordRev.ErrorMessage;
}
set
{
this.EnsureChildControls();
this.passWordRev.ErrorMessage = value;
}
}
#endregion

public userRegister()
{
}

protected override void CreateChildControls()
{

Random random = new Random();
this.Controls.Clear();
//label lbCheck
lbCheck = new Label();
this.lbCheck.ID = "lbCheck1";
this.lbCheck.Width = Unit.Pixel(35);
this.lbCheck.Height = Unit.Pixel(20);
this.lbCheck.Text = random.Next(9999).ToString("0000");
this.Controls.Add(lbCheck);

//label lbCheckName
lbCheckName = new Label();
this.lbCheckName.ID = "lbCheckName1";
this.lbCheckName.Width = Unit.Pixel(60);
this.lbCheckName.Height = Unit.Pixel(20);
this.lbCheckName.Text = "验证码:";
this.Controls.Add(lbCheckName);

//lbError
lbError = new Label();
this.lbError.ID = "lbError1";
this.lbError.Width = Unit.Pixel(60);
this.lbError.Height = Unit.Pixel(20);
this.lbError.Text = "";
this.lbError.ForeColor = Color.Red;
this.Controls.Add(lbError);

//btnLogin
btnLogin = new Button();
this.btnLogin.ID = "btnLogin1";
this.btnLogin.Width = Unit.Pixel(45);
this.btnLogin.Height = Unit.Pixel(20);
this.btnLogin.Click += new EventHandler(this.btnLoginClick);
this.btnLogin.Text = "登陆";
this.Controls.Add(btnLogin);

//btnClear
btnClear = new Button();
this.btnClear.ID = "btnClear1";
this.btnClear.Width = Unit.Pixel(45);
this.btnClear.Height = Unit.Pixel(20);
this.btnClear.Click += new EventHandler(this.btnClearClick);
this.btnClear.Text = "取消";
this.Controls.Add(btnClear);

//Label lbU
lbU = new Label();
this.lbU.ID = "lbU1";
this.lbU.Text = "账号: ";
this.lbU.Height = Unit.Pixel(20);
this.lbU.Width = Unit.Pixel(50);
this.Controls.Add(lbU);

//Label lbP
lbP = new Label();
this.lbP.ID = "lbP1";
this.lbP.Text = "密码: ";
this.lbP.Height = Unit.Pixel(20);
this.lbP.Width = Unit.Pixel(50);
this.Controls.Add(lbP);

//TextBox userName
userName = new TextBox();
this.userName.ID = "userName1";
this.userName.Height = Unit.Pixel(20);
this.userName.Width = Unit.Pixel(150);
this.Controls.Add(userName);

//TextBox check
check = new TextBox();
this.check.ID = "Check1";
this.check.Width = Unit.Pixel(100);
this.check.Height = Unit.Pixel(20);
this.Controls.Add(check);

//TextBox passWord
passWord = new TextBox();
this.passWord.ID = "passWord1";
this.passWord.Height = Unit.Pixel(20);
this.passWord.Width = Unit.Pixel(150);
this.Controls.Add(passWord);

//RegularExpressionValidator userNameRev
userNameRev = new RegularExpressionValidator();
this.userNameRev.ID = "userNameRev1";
this.userNameRev.ControlToValidate = this.userName.ID;
this.userNameRev.ErrorMessage = "账号输入有错";
this.userNameRev.Display = ValidatorDisplay.Static;
this.Controls.Add(userNameRev);

//RegularExpressionValidator passWordRev
passWordRev = new RegularExpressionValidator();
this.passWordRev.ID = "passWordRev1";
this.passWordRev.ControlToValidate = this.passWord.ID;
this.passWordRev.ErrorMessage = "账号输入有错";
this.passWordRev.Display = ValidatorDisplay.Static;
this.Controls.Add(passWordRev);
this.ChildControlsCreated = true;
}

public event EventHandler btnLogin_Click;
public event EventHandler btnClear_Click;

private void btnLoginClick(object sender, EventArgs e)
{
if (this.btnLogin_Click != null)
{
this.btnLogin_Click(this, e);
}
}

private void btnClearClick(object sender, EventArgs e)
{
if (this.btnClear_Click != null)
{
this.btnClear_Click(this, e);
}
}

protected override void RecreateChildControls()
{
if (this.ChildControlsCreated == false)
{
base.RecreateChildControls();
}
}

protected override void Render(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, " 0");
writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
writer.RenderBeginTag(HtmlTextWriterTag.Table);

writer.RenderBeginTag(HtmlTextWriterTag.Tr); //第一行userName
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.lbU.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.userName.RenderControl(writer);
writer.RenderEndTag();
if (string.IsNullOrEmpty(this.userNameValidateExpression) == false && this.DesignMode == false)
{
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.userNameRev.RenderControl(writer);
writer.RenderEndTag();
}
writer.RenderEndTag();

writer.RenderBeginTag(HtmlTextWriterTag.Tr); //第二行passWord
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.lbP.RenderControl(writer);
writer.RenderEndTag();

writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.passWord.RenderControl(writer);
writer.RenderEndTag();

if (string.IsNullOrEmpty(this.passWordValidateExpression) == false && this.DesignMode == false)
{
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.passWordRev.RenderControl(writer);
writer.RenderEndTag();
}

writer.RenderBeginTag(HtmlTextWriterTag.Tr); //第三行验证
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.lbCheckName.RenderControl(writer);
writer.RenderEndTag();

writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.check.RenderControl(writer);
this.lbCheck.RenderControl(writer);
writer.RenderEndTag();

writer.RenderBeginTag(HtmlTextWriterTag.Tr); //第四行按钮
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.btnLogin.RenderControl(writer);
writer.RenderEndTag();

writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.btnClear.RenderControl(writer);
writer.RenderEndTag();

writer.RenderBeginTag(HtmlTextWriterTag.Tr); //第五行错误提示
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.lbError.RenderControl(writer);
writer.RenderEndTag();

writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag();

writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
}
}
}

编译,然后添加控件到页面,查看控件的事件,你会发现有二个你自己的定义的事件在里面了,点击二个事件中的一个,到代码界面,输入你要的代码。

protected void userRegister1_btnClear_Click(object sender, EventArgs e)
{
Response.Write("事件btnClear执行了");
}

protected void userRegister1_btnLogin_Click(object sender, EventArgs e)
{
Response.Write("事件btnLogin执行了");
}

运行你就知道效果了。。本来还想插入一个图片的,但不知为什么现在浏览器特慢,快死掉了,我感觉到应该是上面那个代码生成的图片太大了,占用资源,大家亲自写一个自己喜欢的控件吧,把事件添加进去,多动手才会有提高,刚看是没用的,看的时候你感觉好简单,到自己做的时候问题就出现好多了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐