当前位置:编程学习 > C#/ASP.NET >>

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

答案: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

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,