新建一个用户控件, 把calender控件拉进来.第一步是外观设置, 这个根据你的需要, 只需对它的相关属性做一些调整即可.下图是我调整后的界面
属性设置如下:
<asp:calendar id = "Calendar1" CellPadding = "2" Width = "160px" TitleStyle-BackColor = "#000000" BorderColor = "#aaaaaa" DayHeaderStyle-BackColor = "#5e715e" OtherMonthDayStyle-ForeColor = "#cccccc" DayNameFormat = "Full" runat = "server" TitleStyle-ForeColor = "#ffffff" NextPrevStyle-ForeColor = "#ffffff" CellSpacing = "1" WeekendDayStyle-BackColor = "#eeeeee" DayHeaderStyle-ForeColor = "#ffffff" SelectionMode = "None" TodayDayStyle-BorderColor = "#5e715e" TodayDayStyle-BorderWidth = "1" TodayDayStyle-Font-Bold = "true" TodayDayStyle-ForeColor = "#5e715e"> 第二步是对内部功能的调整, 这个工作主要集中在以下两个事件的处理上.
PreRender:当服务器控件将要呈现给其包含的Page对象时发生.
DayRender:当为Calendar控件在控件层次结构中创建每一天时发生.
先定义三个整型变量和整型数组
private int[] arrCurrentDays, arrPreDays, arrNextDays;
//三个变量分别是当前月, 前一月, 和下一个月
private int intCurrentMonth, intPreMonth, intNextMonth;
//三个整型数组存放相对月份写有blog的日期
protected System.Web.UI.WebControls.Calendar Calendar1;
//这个就是我们的日历控件了
2. 下面我将分别给出这两个事件的源码, 并在下面解释它实现的功能, 如果你看不明白, 可以先看下面的说明
PreRender
private void Calendar1_PreRender( object sender, System.EventArgs e )
{
Thread threadCurrent = Thread.CurrentThread;
CultureInfo ciNew = ( CultureInfo )threadCurrent.CurrentCulture.Clone( );
ciNew.DateTimeFormat.DayNames = new string[]
{
"日", "一", "二", "三", "四", "五", "六"
};
ciNew.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Sunday;
threadCurrent.CurrentCulture = ciNew;
}
以上代码改变了星期名称的显示.你只需改变字符数组的值就能改名称显示.
DayRender
private void Calendar1_DayRender( object sender, System.Web.UI.WebControls.DayRenderEventArgs e )
{
//该控件在创建每一天时发生. CalendarDay d = ( ( DayRenderEventArgs )e ).Day;
TableCell c = ( ( DayRenderEventArgs )e ).Cell;
}