可用来显示空值的时间选择控件3

2016-01-29 13:06 4 1 收藏

可用来显示空值的时间选择控件3,可用来显示空值的时间选择控件3

【 tulaoshi.com - ASP.NET 】

public DateInput() { // 该调用是 Windows.Forms 窗体设计器所必需的。 InitializeComponent(); tbMonth.ContextMenu = mnu ; tbYear.ContextMenu = mnu ; tbDay.ContextMenu = mnu ; this.Height = 21 ; this.Value = DateTime.Now ; this.DateFormat = "yyyy-MM-dd" ; if (!this.DesignMode) CreateCalendar() ; this.UpDown.Width = 16 ; this.Refresh() ; } private void CreateCalendar() { Calendar = new MonthCalendar() ; Calendar.Visible = true ; Calendar.DateSelected+=new DateRangeEventHandler(Calendar_DateSelected); frmCalendar = new Form() ; frmCalendar.FormBorderStyle = FormBorderStyle.None ; frmCalendar.TopMost = true ; frmCalendar.Width = 270 ; frmCalendar.Height = 145 ; frmCalendar.Controls.Add(Calendar) ; Calendar.Dock = DockStyle.Fill ; frmCalendar.StartPosition = FormStartPosition.Manual ; frmCalendar.Deactivate+=new EventHandler(Calendar_Leave); frmCalendar.ShowInTaskbar = false ; } private void Calendar_DateSelected(object sender, System.Windows.Forms.DateRangeEventArgs e) { this.frmCalendar.Hide() ; this.Value = this.Calendar.SelectionStart ; this.tbDay.Focus() ; } private void Calendar_Leave(object sender, System.EventArgs e) { this.frmCalendar.Hide() ; //this.Value = this.Calendar.SelectionStart ; this.tbDay.Focus() ; } private void RefreshDisplay() { bool blGB = false ; string strChar = "" ; if (strDateFormat == "yyyy-MM-dd") strChar = "-" ; else if (strDateFormat == "yyyy.MM.dd") strChar = "." ; else if (strDateFormat == "yyyy/MM/dd") strChar = "/" ; else if (strDateFormat== "yyyy年MM月dd日") blGB = true ; else strChar = strFomatChar ; if (blGB) { lbSep1.Text = "年" ; lbSep2.Text = "月" ; lbSep3.Text = "日" ; } else { lbSep1.Text = strChar ; lbSep2.Text = strChar ; lbSep3.Text = "" ; } this.Refresh() ; } /// /// 是不是空值 /// public bool IsNull() { String strYear = tbYear.Text ; String strMonth = tbMonth.Text ; String strDay = tbDay.Text ; if (strYear == "" ||strMonth == "" ||strDay == "" ) return true ; else return false ; } /// /// 设置值为空(实际为时间的最小值) /// public void SetValueNull() { this.Value = DateTime.MinValue ; } /// /// 清空输入值 /// private void EmptyInput() { tbYear.Text = "" ; tbMonth.Text = "" ; tbDay.Text = "" ; } private int GetThisMonthMaxDay() { int Year = int.Parse(tbYear.Text) ; int Month = int.Parse(tbMonth.Text) ; switch(Month) { case 2: if (DateTime.IsLeapYear(Year))//闰年 return 29 ; else return 28 ; case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31 ; case 4: case 6: case 9: case 11: return 30 ; default: return 31 ; } } private void SetRightFmt() { if (IsNull()) EmptyInput() ; else { SetRightMonthDay() ; } this.Refresh() ; } private void SetRightMonthDay() { int MaxDay = GetThisMonthMaxDay() ; int Day = int.Parse(tbDay.Text) ; if (Day > MaxDay) tbDay.Text = MaxDay.ToString() ; } private void IncDecDate(int iSign) { string strYear = tbYear.Text ; if (strYear == "") strYear = DateTime.Now.Year.ToString() ; string strMonth = tbMonth.Text ; if (strMonth == "") strMonth = DateTime.Now.Month.ToString() ; string strDay = tbDay.Text ; if (strDay == "") strDay = DateTime.Now.Day.ToString() ; string strDate = strYear +"-"+ strMonth +"-" +strDay ; DateTime dtOld = DateTime.Parse(strDate) ; if (tbYear.Focused) { this.Value = dtOld.AddYears(1*iSign) ; } else if (tbMonth.Focused) { this.Value = dtOld.AddMonths(1*iSign) ; } else { this.Value = dtOld.AddDays(1*iSign) ; } } private Form GetWindow() { Control con = this ; while(!(con.Parent is Form)) con = con.Parent ; return (Form)con.Parent ; } /// /// 清理所有正在使用的资源。 /// protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); }

来源:http://www.tulaoshi.com/n/20160129/1488890.html

延伸阅读
标签: 办公软件
    读了《中国电脑教育报》今年第28期F6版的《Excel也会“作假”》一文,受益匪浅,文中所述是利用Round函数杜绝Excel的计算误差。其实,Excel之所以产生这种计算上的误差是因为我们在单元格中看到的显示值与实际值不同所造成的,图中即显示了显示值与实际值的差异,当进行计算时Excel以实际值进行计算,而非显示值。知道了这...
标签: Web开发
表单查询显示翻页等不可用,提示对象不支持此属性或方法,切记查询按钮的name值不能为submit。其中原代码如下: 我们应当改为:,不然会出现表单查询显示是点下一步,将继续向下一页翻页,但是点上一页,下一页,等都不可用。本文介绍了我解决问题的方法. 切记查询按钮的name值不能为submit。其中原代码如下: input name="submit" t...
标签: SQLServer
数据完整性是任何数据库系统要保证的重点。不管系统计划得有多好,空数据值的问题总是存在。本文探讨了在SQL Server中处理这些值时涉及的3个问题:计数、使用空表值以及外键处理。 用COUNT(*)处理空值 大多数集合函数都能在计算时消除空值;COUNT函数则属于例外。对包含空值的一个列使用COUNT函数,空值会从计算中消除。但假如COUNT函数...
使用MEMO控件的em_LineFromChar属性,程序如下: procedure TMyForm.BitBtn1Click(Sender: TObject);variLine : Integer ;beginiLine := Memo1.Perform(em_LineFromChar, $FFFF, 0);{ Note: 第一行为 0 }messageDlg(Line Number: + IntToStr(iLine), mtInformation,[mbOK], 0 ) ;end;
        在统计、计算、合并数据时,空值扩散问题,有时不经意冒出来,一不小心,就会导致结果出错。         我举个例子。        有一个成绩表achieve,有四个字段:yuwen、shuxue、yingyu、total,分别用来存储语文、数学、英...

经验教程

637

收藏

55
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部