C# 窗体上 Label控件 实时刷新 显示当前时间

问题描述

我用了while(true){label.Text=DateTime.Now.Second.ToString();}

可是程序就停止响应请问高手怎么办才好

解决方案

解决方案二:
怎么能让他不停地更新而且我还能进行其他操作,如果叫我就timer就不用了
解决方案三:
while (true)            {                label.Text = DateTime.Now.Second.ToString();Application.DoEvents();System.Threading.Thread.Sleep(100);            }
解决方案四:
引用2楼caozhy的回复:

while(true){label.Text=DateTime.Now.Second.ToString();Application.DoEvents();System.Threading.Thread.Sleep(100);}

-------------------------------正解
解决方案五:
除了2楼版主的方式还可以使用Time定时器来完成1、定义Time定时器的轮询间隔2、在Time定时器的事件中写给Label赋当前时间的代码
解决方案六:
引用2楼caozhy的回复:

while(true){label.Text=DateTime.Now.Second.ToString();Application.DoEvents();System.Threading.Thread.Sleep(100);……

可以用多线程的方法做吗请帮忙??????!!!!
解决方案七:
楼主,死循环的代码是很容易出现内存溢出的
解决方案八:
引用6楼lyq8376的回复:

楼主,死循环的代码是很容易出现内存溢出的

比如这个不用死循环用什么帮帮忙
解决方案九:
引用7楼lht8005362388的回复:

引用6楼lyq8376的回复:楼主,死循环的代码是很容易出现内存溢出的比如这个不用死循环用什么帮帮忙

那你就采用4楼的timer的方法吧。思路已经提供给你了
解决方案十:
load事件里面下this.timer1.Interval=1000;this.timer1.Start();timer1_Tick事件下写label.Text=DateTime.Now.Second.ToString();Application.DoEvents();
解决方案十一:
都是不是我想要的我想要用多线程的方法但是不知道怎么做
解决方案十二:
引用2楼caozhy的回复:

while(true){label.Text=DateTime.Now.Second.ToString();Application.DoEvents();System.Threading.Thread.Sleep(100);……

正解。
解决方案十三:
如果不用timer,写成后台线程,线消息更新就可以了。麻烦点,但彻底。
解决方案十四:
还是么有用解决
解决方案十五:
publicvoidStartShowTime(){ThreadthreadShowTime=newThread(newThreadStart(()=>{label1.BeginInvoke(newMethodInvoker(()=>label1.Text=DateTime.Now.ToString()))Thread.Sleep(1000);}));threadShowTime.IsBackground=true;threadShowTime.Start();}

直接手打的不知道对不对反正思路就这个样
其他方案:
publicvoidStartShowTime(){ThreadthreadShowTime=newThread(newThreadStart(()=>{while(true){label1.BeginInvoke(newMethodInvoker(()=>label1.Text=DateTime.Now.ToString()))Thread.Sleep(1000);}}));threadShowTime.IsBackground=true;threadShowTime.Start();}

上面的貌似少了一个循环
其他方案:
bool_isClosed=false;voidCreateThread(){Threadthread=newThread(newThreadStart(TimeProc));thread.Start();}voidTimeProc(){while(!_isClosed){label1.BeginInvoke(newMethodInvoker(()=>label1.Text=DateTime.Now.ToString()))Thread.Sleep(1000);}}
其他方案:
break;
其他方案:
表示用js轻松搞定~functionClock(){vardate=newDate();this.year=date.getFullYear();this.month=date.getMonth()+1;this.date=date.getDate();this.day=newArray("星期日","星期一","星期二","星期三","星期四","星期五","星期六")[date.getDay()];this.hour=date.getHours()<10?"0"+date.getHours():date.getHours();this.minute=date.getMinutes()<10?"0"+date.getMinutes():date.getMinutes();this.second=date.getSeconds()<10?"0"+date.getSeconds():date.getSeconds();this.toString=function(){return"现在是:"+this.year+"年"+this.month+"月"+this.date+"日"+this.hour+":"+this.minute+":"+this.second+""+this.day;};this.toSimpleDate=function(){returnthis.year+"-"+this.month+"-"+this.date;};this.toDetailDate=function(){returnthis.year+"-"+this.month+"-"+this.date+""+this.hour+":"+this.minute+":"+this.second;};this.display=function(ele){varclock=newClock();ele.innerHTML=clock.toString();window.setTimeout(function(){clock.display(ele);},1000);};}
其他方案:
参考这个http://blog.csdn.net/isbnhao/article/details/7914840
其他方案:
privatevoidtimer1_Tick(objectsender,EventArgse){label1.Text=DateTime.Now.ToString("HH:mm:ss");}
其他方案:
顶起,一般用timer吧
其他方案:
你这是死循环的啊用timer吧网上随便找个例子
其他方案:
主线程里出现死循环当然会停止响应再开个线程就行了啊.而且有必要一直实时显示么,反正显示的再快人眼也看不清
其他方案:
.Net封装的各种Timer本来就是专门做这事的,你又偏偏说算了,那还是算了吧
其他方案:
timer最优,否则就是新线程里while(true),sleep,但子线程里操作不了UI控件,要用个代理。
其他方案:
线程里可以操作UI控件,加个语句//去掉非线程之间创建控件的错误CheckForIllegalCrossThreadCalls=false;就行了
其他方案:
1、Timer是最好的2、开子线程Sleep(1000),不过要使用委托3、Application.DoEvent()这个不解析
其他方案:
引用21楼u013052673的回复:

顶起,一般用timer吧

网上有很多例子的
其他方案:

其他方案:
Label显示消息在少量的时候适合,我最近也在做一些上位机的东西,面对众多label串口都已经关闭了页面还在刷新。由于我们只是要显示一句话或者一个值,而Label本身封装了很多属性在里面,而且具体是什么也不甚了解。那么简单原则,自己写一个Control来替代label即可。我是这样解决的publicsealedpartialclassSuperLabel:Control{publicSuperLabel(){this.DoubleBuffered=true;}protectedoverridevoidOnPaintBackground(PaintEventArgse){if(this.DesignMode){base.OnPaintBackground(e);}}protectedoverridevoidOnTextChanged(EventArgse){base.OnTextChanged(e);Refresh();}protectedoverridevoidOnPaint(PaintEventArgse){base.OnPaint(e);StringFormatformat=newStringFormat{LineAlignment=StringAlignment.Center};e.Graphics.FillRectangle(newSolidBrush(BackColor),this.ClientRectangle);e.Graphics.DrawString(this.Text,this.Font,newSolidBrush(ForeColor),this.ClientRectangle,format);}}

其他方案:
需要在UI线程中启动一个新线程然后新线程中异步刷新就可以了http://www.cnblogs.com/chucklu/p/4087469.html
其他方案:
2012年的帖子也挖
其他方案:

其他方案:
好象所有方法都用了,我没话可说!
其他方案:
newThread(()=>{while(true){this.Invoke(newMethodInvoker(()=>this.Text=DateTime.Now.ToString()));Thread.Sleep(1000);}}).Start();

开条线程去跑
其他方案:
为什么我在asp.net里面用Ajax里面用timer实现显示时间时,刚打开要等1秒才开始显示时间啊
其他方案:
用Ajax和timer刷新应该是最好的
其他方案:
引用26楼Z65443344的回复:

线程里可以操作UI控件,加个语句//去掉非线程之间创建控件的错误CheckForIllegalCrossThreadCalls=false;就行了

你在误导他。。线程安全也要知道点的。。
其他方案:
引用32楼q644415569的回复:

2012年的帖子也挖

我擦。。。是啊,为什么会显示在首页。。
其他方案:
timer是最正宗的办法注意有两个不同命名空间下的timer
其他方案:
用时间空间啊。
其他方案:
可以考虑用js吧?///显示时间functionshowTime(){varnow=newDate();varyear=now.getFullYear();varmonth=now.getMonth()+1;vardate=now.getDate();varhours=now.getHours();varmins=now.getMinutes();varsecs=now.getSeconds();vardateVal="";vartimeVal="";dateVal+=year;dateVal+="-";dateVal+=month;dateVal+="-"dateVal+=date;timeVal+=hours;timeVal+=((mins<10)?":0":":")+mins;timeVal+=((secs<=10)?":0":":")+secs;document.all.face.innerHTML="日期:"+dateVal+"<br/>时间:"+timeVal;//document.all.face.innerHTML="时间:"+timeVal;timerID=setTimeout("showTime()",1000);}
其他方案:
引用2楼caozhy的回复:

while (true)            {                label.Text = DateTime.Now.Second.ToString();Application.DoEvents();System.Threading.Thread.Sleep(100);            }

特意登上号来感谢一下你。我纠结了很久,不知道如何让当空间的Text值有变化的时候,窗体上的空间实时刷新。大恩不言谢!我想了好久好久了!
其他方案:
Timer控件就是多线程
其他方案:
楼主是死循环吧,可以考虑用多线程试试,timer空间其实也是多线程,类似于网站的局部刷新吧

时间: 2025-01-30 11:27:55

C# 窗体上 Label控件 实时刷新 显示当前时间的相关文章

在windows窗体上滚动条控件的起始位置是怎么自定义的?

问题描述 在windows窗体上滚动条控件的起始位置是怎么自定义的? 在windows窗体上滚动条控件的起始位置是怎么自定义的?怎么修改窗口上滚动条的布局,在上面插入快捷定位的按钮呢? 解决方案 Win32窗体的所有控件都认为是窗体,所以创建一个自定义的控件跟创建一个win32的窗体是相似的 参考此篇文章http://www.codeproject.com/KB/miscctrl/custbutton001.aspx 先通过RegisterClassEx注册一个window class,然后就在

qt-如何在Qt5.上设置.窗口整体透明,但是窗体上的控件不透明。

问题描述 如何在Qt5.上设置.窗口整体透明,但是窗体上的控件不透明. 代码: HelloWord::HelloWord(QWidget *parent) : QMainWindow(parent), ui(new Ui::HelloWord) { ui->setupUi(this); QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal)

实时显示-vc 怎么让网格控件 实时的显示数据库中的数据好点,ODBC连的数据库

问题描述 vc 怎么让网格控件 实时的显示数据库中的数据好点,ODBC连的数据库 使用一个网格控件显示数据库中的一些字段的值,当库中的数据有变化时,网格及时刷新, 除了定时查询数据库显示到网格之外,还有没有别的方法,各位大牛们都是怎么做的? 解决方案 http://www.51cto.com/specbook/14/37094.htmhttps://msdn.microsoft.com/zh-cn/library/a52dhwx7(v=VS.80).aspx 解决方案二: 开一个后台线程定期查询

如何实现类似imagelist、timer这类不直接显示在窗体上的控件

问题描述 正在做winform控件,希望拖动至桌面时产生类似imagelist.timer之类,在设计时仅将控件图标显示在form底部? 解决方案 解决方案二:那是组件了,不会显示在窗体上的.解决方案三:deriveyourclassfromSystem.ComponentModel.Component,NOTfromUserControl:publicclassMyNoneUIControl:System.ComponentModel.Component{//...} 解决方案四:这个应该叫做

C# winform程序动态加载控件,总是窗体先出现,窗体上的控件出现屏幕背景,闪一下 才出现控件,出现的时间也不同步

问题描述 初始化显示控件,或者是alt+tab切换页面,的时候都是整个页面先出来,就是有个别的控件出来的很慢,而且带有屏幕的背景色一闪而过,才完全加载出来 解决方案 解决方案二:Up,求解答啊,界面现在初始化的时候,有点闪,接受不了,解决方案三:vs自动生成的Form1.Designer.cs中,控件都是用下面代码包裹起来的.你就没想过是为什么吗?this.SuspendLayout();......this.ResumeLayout(false);this.PerformLayout();解决

求助 服务器上TREEVIEW控件 不能点.显示JS错误 其他也是反正JS错误了.

问题描述 如题.treeview下拉也是JS错误....LinkButton点了也没反映....反正基本都是JS错误.本地调试没问题了...主要是服务器把..虚拟主机...本人初学.NET..郁闷中了.... 解决方案 解决方案二:如果是vs2003的,请把aspnet_client文件夹的东西也传过去如果是vs2005的,请让虚拟主机的管理员把,axd文件后缀解析打开解决方案三:VS05的.axd文件后缀解析打开?能具体点吗?解决方案四:你是不是使用了UpdatePanel如果是的话.检查你的

webform的label控件的tooltip 显示时间

问题描述 我想让显示时间长一点,该怎么实现呢? 解决方案 解决方案二:什么叫显示时间长一点,就是鼠标移开也不会马上消失吗?可以选用插件来做,显示提示之后用setTimeOut来延时消失解决方案三:鼠标不移开不消失,移开了就消失了

在Delphi中巧改窗体文件实现控件数组

delphi 开发的应用中,每一个窗体都有一个对应的窗体文件(.dfm),用来记录该窗体的属性以及窗体上所有控件的属性,以便在窗体关闭后能准确地重新生成窗体.几乎所有的DELPHI参考书都没有提到过该文件的具体情况,偶尔提到,也都泛泛而谈,因为窗体文件是二进制文件,只有在DELPHI提供的编辑环境中才能看到它的本来面目,对其进行操作可能会出现不可预知的错误:而且在大多数情况下,确实没有修改的必要.而本文谈到的和窗体文件密切相关. 要利用窗体文件,首先必须了解该类型文件的结构.窗体文件的结构很简单

C#实现窗体和任意控件的拖动

程序内有大部分注释了,欢迎大家指正了! Code [copy to clipboard] CODE: 1using System; 2using System.Drawing; 3using System.Windows.Forms; 4 5namespace Yoker.FormUtils 6{ 7 /**//// <summary> 8 /// <para>说明:窗体拖动类,通过这个类提供的方法实现窗体上任意控件可辅助拖动窗体</para> 9 /// <pa