答案:private void tbDay_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (this.DesignMode)
return ;
TextBox obj = (TextBox)sender ;
obj.SelectedText = "" ;
string strValue = obj.Text.Trim() ;
int iLen= strValue.ToString().Length ;
int key = (int)(e.KeyChar) ;
switch(key)
{
case 48://0
case 49://1
case 50://2
case 51://3
case 52://4
case 53://5
case 54://6
case 55://7
case 56://8
case 57://9
if (iLen == 0)
e.Handled = false ;
else if (iLen == 1)//已经输入了一位
{
e.Handled = true ; //默认不处理,后面分析需要处理的情况
if (key==48||key==49||key==50)//现在输入的是0,1,2
{
if(obj.SelectionStart == 0)//插入
{
if (strValue != "0")//已经输入的不是0
e.Handled = false ;
if (strValue == "0" &&(key==49||key==50))
e.Handled = false ;
}
else
{
if (strValue == "0"||strValue == "1"||strValue == "2"||strValue == "3")//追加且已经输入了0,1,2,3
e.Handled = false ;
if (key==48&&strValue == "0")
e.Handled = true ;
if (key==50&&strValue == "3")
e.Handled = true ;
}
}
else//输入的是非0,1,2数字
{
if (strValue == "0"||strValue == "1"||strValue == "2")//已经输入了一个0,1,2
{
if (obj.SelectionStart == 0)//前面插入数字
{
if (key==51&&strValue != "2")//只能插入3
e.Handled = false ;
}
else
e.Handled = false ;
}
}
}
else
e.Handled = true ;
break ;
case 45://-
e.Handled = true ;
break ;
case 8://backspace
if (iLen == 0)
obj.Parent.SelectNextControl(obj,false,true,false,true) ;
break ;
case 27://esc
e.Handled = false ;
break ;
default :
e.Handled = true ;
break ;
}
}
private void tbMonth_Enter(object sender, System.EventArgs e)
{
if (this.DesignMode)
return ;
TextBox obj = (TextBox)sender ;
obj.SelectAll() ;
}
private void tbMonth_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (this.DesignMode)
return ;
TextBox obj = (TextBox)sender ;
int iValue = e.KeyValue ;
switch(iValue)
{
case 37://left
if (obj.SelectionStart == 0)
{
obj.Parent.SelectNextControl(obj,false,true,false,true) ;
}
break ;
case 38://top
IncDecDate(1) ;
break ;
case 39://right
if (obj.SelectionStart == obj.Text.Length)
{
obj.Parent.SelectNextControl(obj,true,true,false,true) ;
}
break ;
case 40://down
IncDecDate(-1) ;
break ;
}
}
private void DateInput_Leave(object sender, System.EventArgs e)
{
SetRightFmt() ;
}
private void tbYear_Leave(object sender, System.EventArgs e)
{
String strYear = tbYear.Text ;
int iLen = strYear.Length ;
switch(iLen)
{
case 0:
break ;
case 1:
tbYear.Text = "200"+strYear ;
break ;
case 2:
if (int.Parse(strYear)<40)
tbYear.Text = "20"+strYear ;
else
tbYear.Text = "19"+strYear ;
break ;
}
}
private void tbMonth_Leave(object sender, System.EventArgs e)
{
if (tbMonth.Text!="" &&tbDay.Text !="")
SetRightMonthDay() ;
}
private void UpDown_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e)
{
if (this.DesignMode)
return ;
switch(e.Type)
{
case ScrollEventType.SmallIncrement:
IncDecDate(-1) ;
break ;
case ScrollEventType.SmallDecrement:
IncDecDate(1) ;
break ;
}
}
private void btnMain_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
上一个:不使用COM组件弹出数据库连接对话框
下一个:可用来显示空值的时间选择控件3