• 时间显示控件(yyyyMMDD HH:MM)


    在各种项目里都少不了时间的出现,有时候我们要选择时间,但有时候只能选择年-月-日 没有时分,有时候为了处理这种时间显示还要花点时间来处理,在这种情况下就写了一个简单的时间控件:

    下面是代码片断:
      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 

    这里面的日期是信赖于一个HTC控件在这里可以下载到:
    HTC日期控件

    下面是源代码:
    时间控件源代码

    希望大家指教,我会虚心改正学习。

  • 相关阅读:
    while循环
    三元运算符
    switch用法
    if判断
    位运算
    逻辑运算符
    赋值运算符和比较运算符
    算术运算符
    数据类型的转换
    线程同步之(条件变量)
  • 原文地址:https://www.cnblogs.com/HeroBeast/p/656399.html
Copyright © 2020-2023  润新知