//自定义控件.cs页
public partial class Controls_StarRank : System.Web.UI.UserControl
{
//定义字段
int _rank;
//为自定义控件添加一个事件
public event EventHandler OnValueChanged;
//为自定义控件添加一个属性
public int Rank
{
get { return _rank; }
set
{
_rank = value;
if (OnValueChanged != null)
{
OnValueChanged(this, new EventArgs());
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
StarInit();
}
public void StarInit()
{
//实例化一个长度为5的ImageButton数组,用来存放5颗星
ImageButton[] ibtnArray = new ImageButton[5];
//初始化一个容器Panel,用来存放ImageButton控件数组
Panel pl = new Panel();
//初始化ImageButton数组中的控件,给他们的ImageUrl属性赋值
for (int i = 0; i < 5; i++)
{
ibtnArray[i] = new ImageButton();
//动态生成服务器控件事件的语法
ibtnArray[i].Click += new ImageClickEventHandler(ImageButton_Click);
ibtnArray[i].ID = "ibtn" + i.ToString();
ibtnArray[i].ImageUrl = "../images/v2_gx_hxx2.gif";
pl.Controls.Add(ibtnArray[i]);
}
//将容器控件添加到页面Page上去
this.Controls.Add(pl);
}
protected void ImageButton_Click(object sender, ImageClickEventArgs e)
{
//找到当前控件,知道当前点击的是哪个控件
ImageButton ibtnCurrent = sender as ImageButton;
//找到当前控件的ID
int ibtnCurrentId = int.Parse(ibtnCurrent.ID.ToString().Substring(4));
Panel pl = ibtnCurrent.Parent as Panel;
ImageButton[] ibtnStar = new ImageButton[5];
for (int i = 0; i < 5; i++)
{
//找到需要控制的5个ImageButton(根据ID)
ibtnStar[i] = pl.FindControl("ibtn" + i.ToString() + "") as ImageButton;
if (i <= ibtnCurrentId)
{
ibtnStar[i].ImageUrl = "../images/v2_gx_hxx1.gif";
}
else
{
ibtnStar[i].ImageUrl = "../images/v2_gx_hxx2.gif";
}
}
Rank = ibtnCurrentId + 1;
}
}
//调用自定义控件.cs页
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
StarRank1.OnValueChanged += new System.EventHandler(this.userControl11_OnValueChanged);
}
public void userControl11_OnValueChanged(object sender, EventArgs e)
{
this.TextBox1.Text= StarRank1.Rank.ToString();
}
}