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

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() ;

}

/// <summary>

/// 是不是空值

/// </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 ;

}

/// <summary>

/// 设置值为空(实际为时间的最小值)

/// </summary>

public void SetValueNull()

{

this.Value = DateTime.MinValue ;

}

/// <summary>

/// 清空输入值

/// </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() ;

}

private void SetRightMonthDay()

{

int MaxDay = GetThisMonthMaxDay() ;

int Day = int.Parse(tbDay.Text) ;

if (Day > MaxDay)

tbDay.Text = MaxDay.ToString() ;

}

private void IncDecDate(int iSign)

{

string strYear = tbYear.Text ;

if (strYear == "")

strYear = DateTime.Now.Year.ToString() ;

string strMonth = tbMonth.Text ;

if (strMonth == "")

strMonth = DateTime.Now.Month.ToString() ;

string strDay = tbDay.Text ;

if (strDay == "")

strDay = DateTime.Now.Day.ToString() ;

string strDate = strYear +"-"+ strMonth +"-" +strDay ;

DateTime dtOld = DateTime.Parse(strDate) ;

if (tbYear.Focused)

{

this.Value = dtOld.AddYears(1*iSign) ;

}

else if (tbMonth.Focused)

{

this.Value = dtOld.AddMonths(1*iSign) ;

}

else

{

this.Value = dtOld.AddDays(1*iSign) ;

}

}

private Form GetWindow()

{

Control con = this ;

while(!(con.Parent is Form))

con = con.Parent ;

return (Form)con.Parent ;

}

/// <summary>

/// 清理所有正在使用的资源。

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if(components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

时间: 2024-09-19 09:35:45

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

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

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

轻松实现可扩展自定义的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控件前面的折叠符号,注意不是全部折叠,全部折叠的代码就不要贴了.