黑马程序员技术交流社区

标题: c#timer事件 [打印本页]

作者: 吴彤辉    时间: 2013-10-31 16:40
标题: c#timer事件
本帖最后由 吴彤辉 于 2013-11-1 23:20 编辑
  1. private void timer1_Tick(object sender, EventArgs e)
  2. {
  3.   this.CurrentTime.Text = "当前时间:" + DateTime.Now.ToString();
  4. }
复制代码
通过一个timer的tick事件,在label中显示当前时间,在窗口打开过1s后才会显示当前时间,如何才能当窗口打开时立刻显示当前时间?


作者: 宋清飞    时间: 2013-10-31 17:38
本帖最后由 宋清飞 于 2013-10-31 17:56 编辑

之所以会有1S后才显示时间是因为,timer控件的interval属性值写成了1000,意思是每隔1秒,发生一个动作。
在窗体的事件中找到Load事件,在里面添加一个timer1_Tick方法(添加的时候可以通过下拉菜单中的选项选择),Load事件,就是在加载窗体的同时,触发一个动作,这里的动作就是timer1_Tick中的this.CurrentTime.Text = "当前时间:" + DateTime.Now.ToString();

作者: 吴彤辉    时间: 2013-10-31 18:25
宋清飞 发表于 2013-10-31 17:38
之所以会有1S后才显示时间是因为,timer控件的interval属性值写成了1000,意思是每隔1秒,发生一个动作。
...

Interval这个属性,默认单位为毫秒吗?
在timer的tick事件里,再为label赋值吗?
作者: 有你珍贵    时间: 2013-10-31 19:03
直接写到form窗体中。当程序运行的时候直接获取当前时间赋值给label就可以了。然后再在label中进行、

private void Form1_Load(object sender, EventArgs e)
        {
            //当窗体加载的时候  将当前时间 赋值给lable
            labelTime.Text = DateTime.Now.ToString();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            labelTime.Text = DateTime.Now.ToString();
}//记得调1000毫秒。
作者: 宋清飞    时间: 2013-10-31 19:03
本帖最后由 宋清飞 于 2013-10-31 19:35 编辑
吴彤辉 发表于 2013-10-31 18:25
Interval这个属性,默认单位为毫秒吗?
在timer的tick事件里,再为label赋值吗? ...

interval,默认单位是毫秒。
  1. namespace WindowsFormsApplication3
  2. {
  3.       public partial class Form1 : Form
  4.      {
  5.            public Form1()
  6.          {
  7.              InitializeComponent();
  8.           }

  9.              private void timer1_Tick(object sender, EventArgs e)
  10.              {
  11.                 this.CurrentTime.Text = "当前时间:" + DateTime.Now.ToString();
  12.               }
  13.       }
  14. }
复制代码

QQ截图20131031192314.png (62.3 KB, 下载次数: 42)

Form1事件

Form1事件

QQ截图20131031192530.png (50.24 KB, 下载次数: 42)

QQ截图20131031192530.png

作者: 凤凰涅槃    时间: 2013-10-31 19:09
Interval的默认单位为毫秒,你的这个问题只需将timer控件的Interval属性设置的小点就可以实现在Label标签中立即显示时间的效果,
你可以试试将Interval的值设为100、10、0看看不同的效果。
作者: 猫咪不吃糖    时间: 2013-10-31 19:29
在Form1_Load事件中给label赋值;
  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             label1.Text = "当前时间:" + DateTime.Now.ToString();
  4.         }
复制代码

作者: 喜之郎果冻    时间: 2013-10-31 20:56
很简单的,在Form1Load方法里面写一行代码label1.Text = "当前时间:" + DateTime.Now.ToString();。这样就可以在窗体加载时立即显示当前时间
作者: 张小康    时间: 2013-10-31 21:54
可以窗体打开的时候,就显示当前时间
private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = DateTime.Now.ToString();
        }
作者: 蒋东东    时间: 2013-10-31 23:25
在formload事件中做一次当前时间显示。不过据说timer这东西效率不高,如果是复杂的程序,建议用后台线程或其他方法。
作者: 吴彤辉    时间: 2013-11-1 08:42
宋清飞 发表于 2013-10-31 19:03
interval,默认单位是毫秒。

很详细,多谢了,请问你的软件是哪个版本的啊
作者: 佟嘉豪    时间: 2013-11-1 15:17
这个不要局限于timer
每个类都有自己的用途
你可以在formload的时候 直接让控件显示时间
load方法,是在窗口打开的时候 就首先执行的
这个你可以看下programe.cs 首先调用的是方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2