[习题]输入自己的生日(年/月/日)#2 -- 日历(Calendar)控件的时光跳跃,一次跳回五年、十年前?--TodaysDate属性、VisibleDate属性
上一篇文章:[习题]输入自己的生日(年/月/日)-- 日历(Calendar)控件的时光跳跃,一次跳回五年、十年前?--TodaysDate属性、VisibleDate属性
http://www.dotblogs.com.tw/mis2000lab/archive/2011/05/30/calendar_todaysdate.aspx
这个习题可以当成「上集」 Ch.3 日历控件的补充范例。
补充这样的功能:
上图的「出生年」,如果要包含一百年的选项
我们没法自己动手慢慢添加子选项,必须靠写程序完成。
如何控制年份呢?
请看 System.DateTime里面就有很多方法可用。
例如 .AddYear()方法,您可以用 -1来减去一年,请看 http://msdn.microsoft.com/zh-tw/library/system.datetime.addyears.aspx
for
(int i = 0; i < 101; i++)
{
//== 方法一 ==:
//int myYear = System.DateTime.Now.Year - i;
//DropDownList1.Items.Add(myYear.ToString());
//== 方法二 ==:
DropDownList1.Items.Add(System.DateTime.Today.AddYears(-i).ToString("yyyy"));
}
修正建议:把 System.DateTime移到for 循环外面,
避免每一次跑循环都要调用 Now() 或 .AddYear()方法,以节省资源。
另外一个重点,就是「制订日历控件呈现的那一年、那一月份」
使用日历控件的「VisibleDate」属性会比「TodaysDate」属性更好。
MSDN里面有提到:
如果日历控件的 VisibleDate属性未设定,所指定的日期 TodaysDate属性会决定哪个月份会显示在Calendar控件。
//==
方法一 ==:
//Calendar1.TodaysDate = new DateTime(Convert.ToInt32(DropDownList1.SelectedValue), Convert.ToInt32(DropDownList2.SelectedValue),
1);
//==
DateTime里面的日期(年/月/日),只能接受「整数」。
//==
方法二 ==:
//****
建议改用 .VisibleDate属性 更好。
//****
只会出现「当月月份」!
Calendar1.VisibleDate = new
DateTime(Convert.ToInt32(DropDownList1.SelectedValue),
Convert.ToInt32(DropDownList2.SelectedValue), 1);
//== DateTime里面的日期(年/月/日),只能接受「整数」。
使用 .VisibleDate属性时,当月份的日期不会「预设」被选定,画面也好看一点。
这是上课的补充范例,
很多「初学者」以为自己不会写程序
后来我发现他们是不会用字符串函数、不会用日期与时间的相关函数
未必是「基础的 if / for / while 语法」不会用,毕竟以前在学校多少都有学过一点点
[习题]输入自己的生日(年/月/日)#2 -- 日历(Calendar)控件的时光跳跃,一次跳回五年、十年前?--TodaysDate属性、VisibleDate属性的更多相关文章
- [习题]日历(Calendar)控件的障眼法(.Visible属性),使用时才出现?不用就消失?
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/09/02/calendar_icon_visible.aspx [习题]日历(Cal ...
- ListView控件--2016年12月9日
ListView属性 ListView 名称 说明 AccessKey 重写 WebControl.AccessKey 属性. 不支持将此属性设置 ListView 控件.(覆盖 WebContr ...
- [Android] AutoCompleteTextView:自己主动完毕输入内容的控件(自己主动补全)
AutoCompleteTextView是EditText的直接子类,与普通EditText的最大不同就是.在用户输入的过程中,能够列出可供选择的输入项.方便使用者. AutoCompleteText ...
- Android AutoCompleteTextView控件实现类似百度搜索提示,限制输入数字长度
Android AutoCompleteTextView 控件实现类似被搜索提示,效果如下 1.首先贴出布局代码 activity_main.xml: <?xml version="1 ...
- C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)
C语言根据日期判断星期几(使用基姆拉尔森计算公式) 算法如下: 基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数, ...
- php计算两个日期相差 年 月 日
在PHP程序中,很多时候都会遇到处理时间的问题,比如:判断用户在线了多长时间,共登录了多少天,两个帖子发布的时间差或者是不同操作之间的日志记录等等.在文章中,简单地举例介绍了PHP中如何计算两个日期相 ...
- 【原创】Js:日期处理(日期格式必须【yyyy-mm-dd】才能转成long的毫秒!其他的不是【年-月-日】的格式,结果会是【NaN】)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- ASP.NET C# 日期 时间 年 月 日 时 分 秒 格式及转换(转自happymagic的专栏)
在平时编码中,经常要把日期转换成各种各样的形式输出或保持,今天专门做了个测试,发现DateTime的ToString()方法居然有这么多的表现形式,和大家一起分享. DateTime time=Dat ...
- ASP.NET 日期 时间 年 月 日 时 分 秒 格式及转换
在平时编码中,经常要把日期转换成各种各样的形式输出或保持,今天专门做了个测试,发现DateTime的ToString()方法居然有这么多的表现形式,和大家一起分享. DateTime time=Dat ...
随机推荐
- cf 424
Office Keys 首先显然有随人位置的递增,钥匙的位置也要递增,这样考虑两张做法: 1.$f(i,j)$ 表示前i个人,钥匙到第j个最少用的最大时间,然后$O(nK)$ dp 2.二分时间,对于 ...
- 性能测试之Jmeter学习(四)
本节主要讲解:如何创建Web测试计划 如何创建一个简单的测试计划,用于测试web站点? 1.明确测试需求:我们会模拟5个并发用户,对Jakarta Web站点的网个页面进行访问,另外每个并发用户都会运 ...
- c++的const总结(转)
为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替 ...
- 51nod 1099【贪心】
思路: 我们可以思考对于仅仅两个元素来说,A,B; 先选A的话是会 A.b+B.a; 先选B的话是会 B.b+A.a; 所以哪个小哪个就放前面; #include <cstdio> #i ...
- ES6之Promise对象学习——8个例子学会Promise
目录 Promise 立即执行 Promise 三种状态 Promise 不可逆性 链式调用 Promise.then()回调异步性 Promise中的异常 Promise.resolve() res ...
- c++中初始化列表的初始化变量顺序问题
例题来看:请问下面程序打印出的结果是什么? #include <iostream> #include <string> using namespace std; class b ...
- JQuery Easyui/TopJUI 多表头创建
JQuery Easyui/TopJUI 多表头创建 废话不多说,直接贴上代码. html <div data-toggle="topjui-layout" data-opt ...
- kojs select绑值(工作)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...
- PlSqlDev中执行INSERT SQL语句包含&符号导致数据异常
在PLSQL Developer中执行Insert语句时提示如下信息: 当时未注意,直接点击OK按钮继续. 导入数据后查看发现部分数据中的参数丢失了一部分,呈以下规律: . 而正常应为: . 经询问大 ...
- 软件管理命令-- rpm
RPM(红帽软件包管理器) 安装软件 rpm -ivh filename.rpm 升级软件 rpm -Uvh filename.rpm 卸载软件 rpm -e filename.rpm -i 安装一个 ...