可用来显示空值的时间选择控件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)

{

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

时间: 2024-10-31 00:55:38

可用来显示空值的时间选择控件5的相关文章

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

控件|显示 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" ; i

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

控件|显示 using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Data; using System.Windows.Forms; namespace XPangLib { /// <summary> /// DateInput 的摘要说明. /// </summary> public class DateInput : Sys

轻松实现可扩展自定义的Android滚轮时间选择控件_Android

项目需求中有个功能模块需要用到时间选择控件,但是android系统自带的太丑了,只能自己优化下,结合WheelView实现滚轮选择日期,好像网上也挺多这种文章的.但是适用范围还是不同,希望这个能够对需求相同的朋友有一定帮助.控件标题还有年月日时分秒这些可以自己控制是否显示,先来看效果.  1.有年月日时分的开始时间 2.只有年月日的结束时间 3.用于有时身份证到期的时间选择(分为勾选长期和直接选择时间两种,另外长期后面自己也可以进行扩展) 4.项目结构 5.直接贴代码,代码里面注释很详细 <sp

android 日期与时间选择控件用法

timepicker也继承自framelayout类.时间选择控件向用户显示一天中的时间(可以为24小时,也可以为am/pm制),并允许用户进行选择.如果要捕获用户修改时间数据的事件,便需要为timepicker添加ontimechangedlistener监听器 以下模拟日期与时间选择控件的用法 目录结构 main.xml布局文件 <?xml version="1.0" encoding="utf-8"?><linearlayout xmlns:

Android之日期时间选择控件DatePicker和TimePicker实例

这个月根据需求在项目中做了一个时间选择器,虽然没有用到Android原生的时间选择控件,但我羞愧地发现自己竟然从来没有用过这方面控件!趁现在有时间,赶紧查缺补漏,写一篇博客吧. (注:为了便于区分,本文将选择年月日的控件称为日期选择控件,将选择时分的控件称为时间选择控件.) 1.创建项目 新建一个项目,MainActivity的布局如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

轻松实现可扩展自定义的Android滚轮时间选择控件

项目需求中有个功能模块需要用到时间选择控件,但是android系统自带的太丑了,只能自己优化下,结合WheelView实现滚轮选择日期,好像网上也挺多这种文章的.但是适用范围还是不同,希望这个能够对需求相同的朋友有一定帮助.控件标题还有年月日时分秒这些可以自己控制是否显示,先来看效果. 1.有年月日时分的开始时间 2.只有年月日的结束时间 3.用于有时身份证到期的时间选择(分为勾选长期和直接选择时间两种,另外长期后面自己也可以进行扩展) 4.项目结构 5.直接贴代码,代码里面注释很详细 <spa

java日期时间选择控件(代码)

一次项目研发中需要日期时间选择控件,网上提供的不多,且质量一般,所以只好自己做,参考了网上某位同学的作品Jave日期选择控件DateChooser . 目前的代码将日期时间选择封装在一个按钮组件内,应该很好用,支持Application .Applet CODE: import java.util.Date;import java.util.Calendar;import java.text.DateFormat;import java.text.SimpleDateFormat;import

imageview-ImageView覆盖问题:如何将图片一直显示在GridView整体控件之上,求大神解惑?

问题描述 ImageView覆盖问题:如何将图片一直显示在GridView整体控件之上,求大神解惑? 我的整体布局是在FramLayout里有个ScrollView滚动视图,然后ScrollView里面放的是GridView加载自定义item,我想在FramLayout整体控件底部显示一个'图片A'并且随时都可以的点击的,就是想让'图片A'飘在屏幕嘴上面,但是当加载GridView中的图片时会挡住那个'图片A'也点击不了,请问怎么解决啊?? 解决方案 这个只是FrameLayout里控件的叠放顺

怎么取消显示禁用的treeview控件前面的折叠符号

问题描述 怎么取消显示禁用的treeview控件前面的折叠符号 能不能部分禁用treeview的折叠符号?怎么取消显示禁用的treeview控件前面的折叠符号,注意不是全部折叠,全部折叠的代码就不要贴了.