在各种项目里都少不了时间的出现,有时候我们要选择时间,但有时候只能选择年-月-日 没有时分,有时候为了处理这种时间显示还要花点时间来处理,在这种情况下就写了一个简单的时间控件:
下面是代码片断:
这里面的日期是信赖于一个HTC控件在这里可以下载到:
HTC日期控件
下面是源代码:
时间控件源代码
希望大家指教,我会虚心改正学习。
1 using System;
2 using System.Web.UI;
3 using System.Web.UI.WebControls;
4 using System.ComponentModel;
5 using System.ComponentModel.Design;
6
7 namespace HBControls
8 {
9
10 /// <summary>
11 ///作者:王永强|HeroBeast|海尔比斯特
12 ///时间:2006-12-24
13 ///功能:显示为:2008-02-12 12:01的时间格式,支持多语言
14 /// </summary>
15 [DefaultProperty("Text"),
16 ToolboxData("<{0}:HBDateTime runat=server></{0}:HBDateTime>")]
17 public class HBDateTime : System.Web.UI.WebControls.WebControl,INamingContainer
18 {
19 //声明变量
20 private string _strText; //时间
21 private string _strHTCPath; //HTC控件的路径
22 private string _strAuthor ="HeroBeast"; //作者
23 private string _strTime=DateTime.Now.ToShortDateString();//开发时间
24
25
26 private TextBox _textBox; //日期
27 private DropDownList _drpHour; //小时
28 private DropDownList _drpMin; //分钟
29
30 private string _Hour;
31 private string _Min;
32
33 public string Hour
34 {
35 get
36 {
37 return _Hour;
38 }
39 set
40 {
41 _Hour = value;
42 }
43 }
44
45 public string Min
46 {
47 get
48 {
49 return _Min;
50 }
51 set
52 {
53 _Min = value;
54 }
55 }
56
57 //构造
58 public HBDateTime()
59 {
60 //默认显示为当前时间
61 this.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm",System.Globalization.DateTimeFormatInfo.InvariantInfo);
62 _strAuthor = "HeroBeast";
63 _strTime = DateTime.Now.ToShortDateString();
64
65
66 }
67 //开发时间
68 [
69 Bindable(true),
70 Category("DevelopTime"),
71 DefaultValue(""),
72 Description("开发时间")
73 ]
74 public string DevelopTime
75 {
76 get { return _strTime; }
77 //set { _strAuthor = value; }
78 }
79 //作者
80 [
81 Bindable(true),
82 Category("Author"),
83 DefaultValue(""),
84 Description("作者")
85 ]
86 public string Author
87 {
88 get { return _strAuthor; }
89 //set { _strAuthor = value; }
90 }
91 //
92 [
93 Bindable(true),
94 Category("Appearance"),
95 DefaultValue(""),
96 Description("设置HTC日期控件的路径")
97 ]
98 public string HTCPath
99 {
100 get { return _strHTCPath; }
101 set { _strHTCPath = value; }
102 }
103 //定义属性
104 [
105 Bindable(true),
106 Category("Appearance"),
107 DefaultValue(""),
108 Description("获得或设置控件上的时间(格式:2006-10-14 17:15)")
109 ]
110 public string Text
111 {
112 get
113 {
114 EnsureChildControls();
115 //组合成时间格式
116 _strText = this._textBox.Text.Trim()+" "+this._drpHour.SelectedValue+":"+this._drpMin.SelectedValue;
117 return _strText;
118 }
119
120 set
121 {
122 EnsureChildControls();
123 string strTemp = Convert.ToDateTime(value).ToString("yyyy-MM-dd HH:mm",System.Globalization.DateTimeFormatInfo.InvariantInfo);
124
125 _textBox.Text = strTemp.Substring(0,10).ToString();
126 _drpHour.SelectedIndex = _drpHour.Items.IndexOf(_drpHour.Items.FindByValue(strTemp.Substring(11,2).ToString()));
127 string aa = strTemp.Substring(11,2).ToString();
128 _drpMin.SelectedIndex = _drpMin.Items.IndexOf(_drpMin.Items.FindByValue(strTemp.Substring(14,2).ToString()));
129 }
130 }
131
132 //重写Control属性
133 public override ControlCollection Controls
134 {
135 get
136 {
137 EnsureChildControls();
138 return base.Controls;
139 }
140 }
141
142 //重写CreateChildControls方法,将子控件添加到复合控件中
143 protected override void CreateChildControls()
144 {
145 Controls.Clear();//清除所有子控件
146
147 _textBox = new TextBox();
148
149 //设置TextBox为只读
150 _textBox.ReadOnly = true;
151 //样式
152 _textBox.CssClass="dateTimePicker";
153 _textBox.Width=Unit.Pixel(80);
154 //
155 _drpHour = new DropDownList();
156
157 for(int j=0;j<24;j++)
158 {
159 if(j<10)
160 {
161 _drpHour.Items.Add("0"+j.ToString());
162 }
163 else
164 {
165 _drpHour.Items.Add(j.ToString());
166 }
167
168
169 }
170
171 _drpMin = new DropDownList();
172
173 for(int i=0;i<60;i++)
174 {
175 if(i<10)
176 {
177 _drpMin.Items.Add("0"+i.ToString());
178 }
179 else
180 {
181 _drpMin.Items.Add(i.ToString());
182 }
183 }
184
185 this.Controls.Add(_textBox);
186 this.Controls.Add(_drpHour);
187 this.Controls.Add(_drpMin);
188 }
189
190 //重写Render方法
191 protected override void Render(HtmlTextWriter output)
192 {
193 //写日期控件的样式
194 output.Write("<style>BODY { }TABLE { FONT-SIZE: 12px }.dateTimePicker { BEHAVIOR: url("+this._strHTCPath+") }</style>");
195
196 //
197 output.AddAttribute(HtmlTextWriterAttribute.Border,"0px");
198 output.AddAttribute(HtmlTextWriterAttribute.Cellpadding,"0px");
199 output.AddAttribute(HtmlTextWriterAttribute.Cellspacing,"0px");
200 output.RenderBeginTag(HtmlTextWriterTag.Table);
201 output.RenderBeginTag(HtmlTextWriterTag.Tr);
202 output.RenderBeginTag(HtmlTextWriterTag.Td);
203 //
204 _textBox.RenderControl(output);
205 output.RenderEndTag();
206
207 output.RenderBeginTag(HtmlTextWriterTag.Td);
208 _drpHour.RenderControl(output);
209 output.Write(_Hour);
210 output.RenderEndTag();
211
212 output.RenderBeginTag(HtmlTextWriterTag.Td);
213 _drpMin.RenderControl(output);
214 output.Write(_Min);
215 output.RenderEndTag();
216
217 output.RenderEndTag();//tr
218
219 output.RenderEndTag();//table
220 }
221 }
222 }
223
2 using System.Web.UI;
3 using System.Web.UI.WebControls;
4 using System.ComponentModel;
5 using System.ComponentModel.Design;
6
7 namespace HBControls
8 {
9
10 /// <summary>
11 ///作者:王永强|HeroBeast|海尔比斯特
12 ///时间:2006-12-24
13 ///功能:显示为:2008-02-12 12:01的时间格式,支持多语言
14 /// </summary>
15 [DefaultProperty("Text"),
16 ToolboxData("<{0}:HBDateTime runat=server></{0}:HBDateTime>")]
17 public class HBDateTime : System.Web.UI.WebControls.WebControl,INamingContainer
18 {
19 //声明变量
20 private string _strText; //时间
21 private string _strHTCPath; //HTC控件的路径
22 private string _strAuthor ="HeroBeast"; //作者
23 private string _strTime=DateTime.Now.ToShortDateString();//开发时间
24
25
26 private TextBox _textBox; //日期
27 private DropDownList _drpHour; //小时
28 private DropDownList _drpMin; //分钟
29
30 private string _Hour;
31 private string _Min;
32
33 public string Hour
34 {
35 get
36 {
37 return _Hour;
38 }
39 set
40 {
41 _Hour = value;
42 }
43 }
44
45 public string Min
46 {
47 get
48 {
49 return _Min;
50 }
51 set
52 {
53 _Min = value;
54 }
55 }
56
57 //构造
58 public HBDateTime()
59 {
60 //默认显示为当前时间
61 this.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm",System.Globalization.DateTimeFormatInfo.InvariantInfo);
62 _strAuthor = "HeroBeast";
63 _strTime = DateTime.Now.ToShortDateString();
64
65
66 }
67 //开发时间
68 [
69 Bindable(true),
70 Category("DevelopTime"),
71 DefaultValue(""),
72 Description("开发时间")
73 ]
74 public string DevelopTime
75 {
76 get { return _strTime; }
77 //set { _strAuthor = value; }
78 }
79 //作者
80 [
81 Bindable(true),
82 Category("Author"),
83 DefaultValue(""),
84 Description("作者")
85 ]
86 public string Author
87 {
88 get { return _strAuthor; }
89 //set { _strAuthor = value; }
90 }
91 //
92 [
93 Bindable(true),
94 Category("Appearance"),
95 DefaultValue(""),
96 Description("设置HTC日期控件的路径")
97 ]
98 public string HTCPath
99 {
100 get { return _strHTCPath; }
101 set { _strHTCPath = value; }
102 }
103 //定义属性
104 [
105 Bindable(true),
106 Category("Appearance"),
107 DefaultValue(""),
108 Description("获得或设置控件上的时间(格式:2006-10-14 17:15)")
109 ]
110 public string Text
111 {
112 get
113 {
114 EnsureChildControls();
115 //组合成时间格式
116 _strText = this._textBox.Text.Trim()+" "+this._drpHour.SelectedValue+":"+this._drpMin.SelectedValue;
117 return _strText;
118 }
119
120 set
121 {
122 EnsureChildControls();
123 string strTemp = Convert.ToDateTime(value).ToString("yyyy-MM-dd HH:mm",System.Globalization.DateTimeFormatInfo.InvariantInfo);
124
125 _textBox.Text = strTemp.Substring(0,10).ToString();
126 _drpHour.SelectedIndex = _drpHour.Items.IndexOf(_drpHour.Items.FindByValue(strTemp.Substring(11,2).ToString()));
127 string aa = strTemp.Substring(11,2).ToString();
128 _drpMin.SelectedIndex = _drpMin.Items.IndexOf(_drpMin.Items.FindByValue(strTemp.Substring(14,2).ToString()));
129 }
130 }
131
132 //重写Control属性
133 public override ControlCollection Controls
134 {
135 get
136 {
137 EnsureChildControls();
138 return base.Controls;
139 }
140 }
141
142 //重写CreateChildControls方法,将子控件添加到复合控件中
143 protected override void CreateChildControls()
144 {
145 Controls.Clear();//清除所有子控件
146
147 _textBox = new TextBox();
148
149 //设置TextBox为只读
150 _textBox.ReadOnly = true;
151 //样式
152 _textBox.CssClass="dateTimePicker";
153 _textBox.Width=Unit.Pixel(80);
154 //
155 _drpHour = new DropDownList();
156
157 for(int j=0;j<24;j++)
158 {
159 if(j<10)
160 {
161 _drpHour.Items.Add("0"+j.ToString());
162 }
163 else
164 {
165 _drpHour.Items.Add(j.ToString());
166 }
167
168
169 }
170
171 _drpMin = new DropDownList();
172
173 for(int i=0;i<60;i++)
174 {
175 if(i<10)
176 {
177 _drpMin.Items.Add("0"+i.ToString());
178 }
179 else
180 {
181 _drpMin.Items.Add(i.ToString());
182 }
183 }
184
185 this.Controls.Add(_textBox);
186 this.Controls.Add(_drpHour);
187 this.Controls.Add(_drpMin);
188 }
189
190 //重写Render方法
191 protected override void Render(HtmlTextWriter output)
192 {
193 //写日期控件的样式
194 output.Write("<style>BODY { }TABLE { FONT-SIZE: 12px }.dateTimePicker { BEHAVIOR: url("+this._strHTCPath+") }</style>");
195
196 //
197 output.AddAttribute(HtmlTextWriterAttribute.Border,"0px");
198 output.AddAttribute(HtmlTextWriterAttribute.Cellpadding,"0px");
199 output.AddAttribute(HtmlTextWriterAttribute.Cellspacing,"0px");
200 output.RenderBeginTag(HtmlTextWriterTag.Table);
201 output.RenderBeginTag(HtmlTextWriterTag.Tr);
202 output.RenderBeginTag(HtmlTextWriterTag.Td);
203 //
204 _textBox.RenderControl(output);
205 output.RenderEndTag();
206
207 output.RenderBeginTag(HtmlTextWriterTag.Td);
208 _drpHour.RenderControl(output);
209 output.Write(_Hour);
210 output.RenderEndTag();
211
212 output.RenderBeginTag(HtmlTextWriterTag.Td);
213 _drpMin.RenderControl(output);
214 output.Write(_Min);
215 output.RenderEndTag();
216
217 output.RenderEndTag();//tr
218
219 output.RenderEndTag();//table
220 }
221 }
222 }
223
这里面的日期是信赖于一个HTC控件在这里可以下载到:
HTC日期控件
下面是源代码:
时间控件源代码
希望大家指教,我会虚心改正学习。