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() ;
}
///
1<summary>
2
3/// 是不是空值
4
5/// </summary>
public bool IsNull()
{
String strYear = tbYear.Text ;
String strMonth = tbMonth.Text ;
String strDay = tbDay.Text ;
if (strYear == "" ||strMonth == "" ||strDay == "" )
return true ;
else
return false ;
}
///
1<summary>
2
3/// 设置值为空(实际为时间的最小值)
4
5/// </summary>
public void SetValueNull()
{
this .Value = DateTime.MinValue ;
}
///
1<summary>
2
3/// 清空输入值
4
5/// </summary>
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() ;
}
<SPAN style="mso-tab-coun