位置:海鸟网 > IT > ASP.NET >

刚写好的Asp.Net时间和日期的Label控件。作为讲解Asp.net控件开发的第一部分:继承开发(5-2)

public DateTimePickEditor()
        {
            //
            // Windows 窗体设计器支持所必需的
            //
            try
            {
                InitializeComponent();
            }
            catch(Exception ee)
            {
                MessageBox.Show(ee.Message+"\n"+ee.Source);
            }

            //
            // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
            //
//            this.Show();
        }
private void btnCancel_Click(object sender, System.EventArgs e)
        {
            this.Close();
        }


        /// <summary>
        /// 获取所有System.Globalization.CultureInfo支持的文化语言,并
        /// 将国家的名称填充到“语言类型”。以当前环境的文化语言为默认
        /// CultureInfo对象。
        /// </summary>
        void FullcbCultrues()
        {
            //清除所有“语言类型”的所有内容
            if(this.cbCultures.Items.Count>0)
                this.cbCultures.Items.Clear();
//            
            //获取所有System.Globalization.CultureInfo支持的文化语言,并将国家的名称填充到“语言类型”。
            foreach(CultureInfo country in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
            {
                this.curi = new zyqCultrueInfo(country.Name);
                if (!this.cbCultures.Items.Contains(curi))
                {
                    this.cbCultures.Items.Add(this.curi);
                }
            }
            cbCultures.Items.Add(new zyqCultrueInfo(CultureInfo.InvariantCulture.Name));
            //选定获取当前以当前环境的文化语言的索引值
            if(this._dtf.LanguageAndCountry==null)
                this.cbCultures.SelectedIndex =this.cbCultures.FindStringExact(CultureInfo.CurrentCulture.DisplayName);
            else
            {
                this.curi= new zyqCultrueInfo(this._dtf.LanguageAndCountry);
                this.cbCultures.SelectedIndex=this.cbCultures.FindStringExact(this.curi.DisplayName);  
            }
            
        }

        private void cbCultures_SelectedIndexChanged(object sender, System.EventArgs e)
        {            
            this.curi = (zyqCultrueInfo)this.cbCultures.SelectedItem;
            //RFC 1766 name
            this.txtName.Text =curi.Name;  
            //日历
            if(this.cbOptionalCalendars.Items.Count >0)
                this.cbOptionalCalendars.Items.Clear();
            foreach(Calendar cal in this.curi.OptionalCalendars)
            {
                if(!this.cbOptionalCalendars.Items.Contains(cal))
                    this.cbOptionalCalendars.Items.Add(cal);
            }
            int i = this.cbOptionalCalendars.SelectedIndex = this.cbOptionalCalendars.Items.IndexOf(this.curi.Calendar);  
//            //分隔符            
            this.txtDateSeparator.Text = this.curi.DateTimeFormat.DateSeparator;
            this.txtTimeSeparator.Text = this.curi.DateTimeFormat.TimeSeparator;
            this.txtAM.Text =this.curi.DateTimeFormat.AMDesignator;
            this.txtPM.Text = this.curi.DateTimeFormat.PMDesignator;
            //日期和时间格式:
            this.cbFormate.Items.Clear();  
            foreach(string s in this.curi.DateTimeFormat.GetAllDateTimePatterns())
            {
                if(!this.cbFormate.Items.Contains(s))
                    this.cbFormate.Items.Add(s);
            }

            int x=0;
            if(this._dtf.FormateString!=null)
                x=this.cbFormate.FindStringExact(this.curi.DateTimeFormat.FullDateTimePattern);
            if(x>0)
                this.cbFormate.SelectedIndex =x;
            else
                this.cbFormate.SelectedIndex = this.cbFormate.FindStringExact(this.curi.DateTimeFormat.FullDateTimePattern);
        }

        private void cbOptionalCalendars_SelectedIndexChanged(object sender, System.EventArgs e)
        {
//            cbCultures_SelectedIndexChanged (sender, e);
        }

        private void cbFormate_TextChanged(object sender, System.EventArgs e)
        {
            this.txtFormat.Text = this.cbFormate.Text;
        }

        private void txtFormat_TextChanged(object sender, System.EventArgs e)
        {
            try
            {
                //this._dtf = this.txtFormat.Text;
                this.lblExmple.Text = DateTime.Now.ToString(this.txtFormat.Text, curi.DateTimeFormat);;
            }
            catch(Exception de)
            {
                MessageBox.Show(de.Message,"Wrong");
            }
        }

        private void cbShortLongDatePattern_TextChanged(object sender, System.EventArgs e)
        {
            string wrd="";
            string sel="";
            switch(this.cbShortLongDatePattern.Text)
            {
                case "ShortDate":
                    wrd="d";
                    sel=this.curi.DateTimeFormat.ShortDatePattern;
                    break;
                case "LongDate":
                    wrd="D";
                    sel=this.curi.DateTimeFormat.LongDatePattern;
                    break;
                case "FullDate":
                    wrd="f/F";
                    sel=this.curi.DateTimeFormat.FullDateTimePattern;
                    break;
                case "RFC1123":
                    wrd="r/R";
                    sel=this.curi.DateTimeFormat.RFC1123Pattern;
                    break;
                case "ISO8601":
                    wrd="s";
                    sel=this.curi.DateTimeFormat.SortableDateTimePattern;
                    break;
                case "UniversalSortableDateTime":
                    wrd="u/U";
                    //sel=this.curi.DateTimeFormat.ShortDatePattern;
                    break;
                case "ShortTime":
                    wrd="t";
                    sel=this.curi.DateTimeFormat.ShortTimePattern;
                    break;
                case "LongTime":
                    wrd="T";
                    sel=this.curi.DateTimeFormat.LongTimePattern;
                    break;
                case "YearMonth":
                    wrd="y/Y";
                    sel=this.curi.DateTimeFormat.YearMonthPattern;
                    break;
                default:
                    wrd="g/G";
                    //sel=this.curi.DateTimeFormat.ShortDatePattern;
                    break;
            }
            char[] sp=new char[]{'http://www.cuoxin.com/'};
            string[] ss=wrd.Split(sp);
            this.cbFormate.Items.Clear();  
            //DateTimeFormatInfo _dateTimeFormatInfo=new DateTimeFormatInfo();
            for(int i=0;i<=(ss.Length-1);i++)
            {
                
                foreach(string s in this.curi.DateTimeFormat.GetAllDateTimePatterns(Convert.ToChar(ss[i])))
                {
                    if(!this.cbFormate.Items.Contains(s))
                        this.cbFormate.Items.Add(s);
                }
                if(!sel.Equals(string.Empty))
                    this.cbFormate.SelectedIndex = this.cbFormate.FindStringExact(sel);
                else
                    this.cbFormate.SelectedIndex=0;
            }
        }

        private void zyqDateTimePickEditor_Load(object sender, System.EventArgs e)
        {
            this.FullcbCultrues();
            this.cbShortLongDatePattern.SelectedIndex =0;
        }

        private void btnOK_Click(object sender, System.EventArgs e)
        {            
            if((!this.txtName.Text.Equals(string.Empty)) && (!this.txtFormat.Text.Equals(string.Empty)))
                if((!this.txtName.Text.Equals(this._dtf.LanguageAndCountry))&& (!this.txtFormat.Text.Equals(this._dtf.FormateString)))
                {
                    //根据设置一定要生成一个新的对象才能在页面上产生相应的变化
                    this._dtf= new DTFormatSetting(this.txtFormat.Text,this.txtName.Text);
                }
                
            this.DialogResult = DialogResult.OK;
            this.Close();
        }

        private void txtName_TextChanged(object sender, System.EventArgs e)
        {
//            if(!this.txtName.Text.Equals(string.Empty))
//                if(!this.txtName.Text.Equals(this._dtf.LanguageAndCountry))
//                    this._dtf.LanguageAndCountry =this.txtName.Text;
        }