欢迎光临
我们一直在努力

可用来显示空值的时间选择控件5-.NET教程,组件控件开发

建站超值云服务器,限时71元/月

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)

{

control con = (control)sender ;

int baselen = con.height / 6 ;

point pos1 = new point(con.width/2 – baselen-2,baselen*2) ;

point pos2 = new point(con.width/2 + baselen+2,baselen*2) ;

point pos3 = new point(con.width/2,baselen*4) ;

point[] mulpos = {pos1,pos2,pos3} ;

if (btnmain.enabled)

{

e.graphics.drawpolygon(pens.black,mulpos) ;

e.graphics.fillpolygon(brushes.black,mulpos) ;

}

else

{

e.graphics.drawpolygon(pens.darkgray,mulpos) ;

e.graphics.fillpolygon(brushes.darkgray,mulpos) ;

}

}

private void btnmain_click(object sender, system.eventargs e)

{

if (this.designmode)

return ;

if (frmcalendar.visible)

{

frmcalendar.visible = false ;

return ;

}

else

{

point pos = this.location ;

pos.y = pos.y + this.height ;

pos = this.parent.pointtoscreen(pos) ;

pos = setcalendarpos(pos,frmcalendar) ;

frmcalendar.setdesktoplocation(pos.x,pos.y) ;

frmcalendar.visible = true ;

}

}

private point setcalendarpos(point spos,control contoshow)

{

point newpos =new point(spos.x,spos.y);

int iconwidth = contoshow.width ;

int iconheight = contoshow.height ;

int iscrwidth = system.windows.forms.screen.primaryscreen.workingarea.width ;

int iscrheight = system.windows.forms.screen.primaryscreen.workingarea.height ;

if (spos.y + iconheight>iscrheight)

newpos.y = iscrheight – iconheight ;

if (spos.x + iconwidth>iscrwidth)

newpos.x = iscrwidth – iconwidth ;

return newpos ;

}

private void lbspace_click(object sender, system.eventargs e)

{

if (this.designmode)

return ;

tbday.focus() ;

tbday.selectall() ;

}

private void lbsep1_enabledchanged(object sender, system.eventargs e)

{

label label = (label)sender;

if (label.enabled)

label.backcolor = color.fromknowncolor(knowncolor.window) ;

else

label.backcolor = color.fromknowncolor(knowncolor.control) ;

}

}//end class

public class dateformatconverter:system.componentmodel.stringconverter

{

/// <summary>

/// 根据返回值确定是否支持下拉框的形式

/// </summary>

/// <returns>

/// true: 下拉框的形式

/// false: 普通文本编辑的形式

/// </returns>

public override bool getstandardvaluessupported(system.componentmodel.itypedescriptorcontext context)

{

return true;

}

/// <summary>

/// 下拉框中具体的内容

/// </summary>

public override system.componentmodel.typeconverter.standardvaluescollection getstandardvalues(system.componentmodel.itypedescriptorcontext context)

{

return new standardvaluescollection(new string[]{"yyyy-mm-dd","yyyy.mm.dd","yyyy/mm/dd","yyyy年mm月dd日","自定义"});

}

public override bool canconvertfrom(system.componentmodel.itypedescriptorcontext context, system.type sourcetype)

{

if( sourcetype == typeof(string) )

return true;

else

return base.canconvertfrom(context, sourcetype);

}

/// <summary>

/// 根据返回值确定是否是不可编辑的文本框

/// </summary>

/// <returns>

/// true: 文本框不可以编辑

/// flase: 文本框可以编辑

/// </returns>

public override bool getstandardvaluesexclusive(system.componentmodel.itypedescriptorcontext context)

{

return true;

}

}

}//end namespace

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 可用来显示空值的时间选择控件5-.NET教程,组件控件开发
分享到: 更多 (0)

相关推荐

  • 暂无文章