c# 代码中c 拖放label控件1控件不会每隔0.5秒刷新一次,而是5秒后直接显示10。各位大神们请问该怎么办。

> C#如何在同一事件中改变Label控件内容多次
label1.Text = "hello";
Thread.Sleep(2000);
label1.Text = "world";
题目可能描述的不清楚,我举个例子吧,比如如上这段代码,我原意是让Label的内容为hello,然后过了2S以后,再让它的内容变成world,但实际运行时是程序暂停2S之后Label的内容直接变成world的,一开始也不显示hello,那么怎么做才能让它按照我的原意显示?
跨线程访问控件,参考
—- 5分
label1.Text = “hello”;
Application.DoEvents();
Thread.Sleep(2000);
label1.Text = “world”;
楼上的正解。主要是
Application.DoEvents();
引用 3 楼 caozhy 的回复:
label1.Text = “hello”;
Application.DoEvents();
Thread.Sleep(2000);
label1.Text = “world”;
这个确实可以,但在WPF中好像没有这个方法
—- 5分
public static class DispatcherHelper
[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public static void DoEvents()
DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrames), frame);
try { Dispatcher.PushFrame(frame); }
catch (InvalidOperationException) { }
private static object ExitFrames(object frame)
((DispatcherFrame)frame).Continue =
不用多线程这么麻烦。
用定时器就是可以了,第一次赋值之后,启动一个2秒的定时器,定时器触发的时候修改Label。
直接在主线程里Sleep,由于无法刷新,第一次赋值的内容是看不到的。
该回复于 10:36:54被管理员删除
Thread th = new Thread(() =&
this.Invoke(new MethodInvoker(() =& { label1.Text = "Hello"; }));
Thread.Sleep(5000);
this.Invoke(new MethodInvoker(() =& { label1.Text = "World"; }));
th.Start();
引用 6 楼 caozhy 的回复:
public static class DispatcherHelper
[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public static void DoEvents()
DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrames), frame);
try { Dispatcher.PushFrame(frame); }
catch (InvalidOperationException) { }
private static object ExitFrames(object frame)
((DispatcherFrame)frame).Continue =
这段代码我在网上也搜到过,但用的时候会提示未能找到类型或命名空间名称“DispatcherFrame”(是否缺少 using 指令或程序集引用?)不知道该添加哪个命名空间?
Application.DoEvents(); 让界面显示下
Web里面可以用前台的js加定时器处理,后台的话还真没碰到过
首先时间对象也是一个线程,
所以可以用线程+委托:
public void BtnControl()
Thread.Sleep(2000);
label1.Invoke(new MethodInvoker(delegate
label1.Text = “bbb”;
aa.Abort();
private void button1_Click(object sender, EventArgs e)
label1.Text = “aaa”;
aa = new Thread(new ThreadStart(BtnControl));
aa.Start();
—- 10分
楼主的那段代码应该曾被多少人梦想过啊~~我当年也幻想能这样做的。
你应该理解,在事件改变Label的值与界面重绘是在同一个线程,就是改变值跟重绘是顺序来做的(这个过程界面会卡住”无法响应“),最后等到事件结束了才将最后的结果绘制出来。
所以要实现这样的效果,思路应该是赋值Label的值,释放控件线程让它重绘。在其他线程等待2s后,再触发个事件为Label赋第二次值。
#3,#7,#9,#13楼应该都能实现你要的效果吧。
#13楼简化:
private void button1_Click(object sender, EventArgs e)
label1.Text = “Hello”;
new Thread(delegate()
Thread.Sleep(2000);
label1.BeginInvoke(new MethodInvoker(() =&
label1.Text = “World”;
}).Start();
CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用协议进行授权 , 转载请注明!
or分享 (0)在C#中如何使用多线程,每隔几秒去执行一个方法?_百度知道
在C#中如何使用多线程,每隔几秒去执行一个方法?
我有更好的答案
/// &summary&
/// 简单的 线程执行的 方法.
/// 这个方法是 静态的
/// &/summary&
public static void ThreadFunc()
// 线程停止运行的标志位.
Boolean done =
int count = 0;
while (!done)
// 休眠1秒.
Thread.Sleep(1000);
// 计数器递增
Console.WriteLine(&[静态]执行次数:{0}&, count);
}/// &summary&
/// 启动线程的代码.
/// &/summary&
public static void StartThread()
ThreadStart ts = new ThreadStart(ThreadFunc);
Thread t = new Thread(ts);
t.Start();
}全部的例子代码看下面的帖子
采纳率:59%
现在vs2008一般不用线程,大家都使用委托1、委托程序
private void WriteLog(string content)
//内容自己写 }2、委托手柄delegate void WriteLogHandle(string content);3、委托使用方法this.Invoke(new WriteLogHandle(WriteLog),new object[]{&参数&});然后放一个时钟控件,循环去执行方法(3)就行了
引入名称空间using System.T然后使用Thread对象调用方法例如do{方法Thread.Sleep(2000);}while(条件)
窗体有Timer,线程也有自己Timer类。你使用线程的Timer类就可以实现了。
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
多线程的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&td align=&center& style=&width:770px&&
&asp:repeater id=&repeater1& Runat=&server& &
&ItemTemplate&
&table width=&95%& border=&0& align=&center& cellpadding=&0& cellspacing=&0&&
&td height=&50& colspan=&2& align=&center& class=&tit&&&font color=&red&&信息标题:&/font&
&%#DataBinder.Eval(Container.DataItem,&title&)%&&/td&
&td width=&40%& height=&30& style=&BORDER-TOP: # BORDER-BOTTOM: #px solid&&
双击自动滚屏/单击停止滚屏&/td&
&td width=&60%& align=&center& style=&BORDER-TOP: # BORDER-BOTTOM: #px solid&&
发布者:&%#DataBinder.Eval(Container.DataItem,&username&)%&
发布时间:&%#Convert.ToDateTime(DataBinder.Eval(Container.DataItem,&InfoTime&)).ToShortDateString()%&
阅读:&font color=&#ff0000&&&%#DataBinder.Eval(Container.DataItem,&Hit&)%&&/font&次
评论:&font color=&#ff0000&&&%#GetAnswerCindexByNewsID(int.Parse(DataBinder.Eval(Container.DataItem, &N_id&).ToString()))%&&/font&次&/td&
&td colspan=&2&&&br&
&div style='FONT-SIZE:12px'&&font color=&red&&信息内容:&/font& &%#checkcontent(DataBinder.Eval(Container.DataItem,&info&).ToString())%&&br/&
&asp:Label id=&Label12& Runat=&server&
ForeColor=&Green& Text=&附件-&&&&/asp:Label&
&a href='../Web/adminManager/FuJian.aspx?N_id=&%#DataBinder.Eval(Container.DataItem,&N_id&)%&'&&font color=&green&&&asp:Label ID=&fujian_desc& runat=&server& Text='&%# Bind(&FuJian_desc&) %&'&&/asp:Label&&/font&&/a&
(后台能获得repeater1控件的ID ,但得不到Label12,和fujian_desc的控件ID,,求解?)
昵称: chengge37 &时间:
昵称: starfd &时间:
DataTable dt = new DataTable();
dt.Columns.Add(&aa&);
dt.Rows.Add(new object[] { &附件1& });
dt.Rows.Add(new object[] { &附件2& });
dt.Rows.Add(new object[] { &附件3& });
Repeater1.DataSource =
Repeater1.DataBind();
foreach(Control cl in Repeater1.Controls)
if (cl.ID == &Label1&)
Label lb = (Label)
Response.Write(lb.Text);
昵称: liuchaolin &时间:
后台C# code
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
Label nameInfo = e.Item.FindControl(&labelNAME&) as L
labelInfo.Text = nameInfo.T
昵称: silverradiance &时间:
昵称: chen &时间:欢迎加入我们,一同切磋技术 &
用户名: &&&
密 码: &
共有 1330 人关注过本帖
标题:显示用代码显示100个label控件
一行显示10个
求大神当老师
来 自:山东济宁
等 级:论坛游民
帖 子:23
专家分:28
&&问题点数:0&&回复次数:7&&&
显示用代码显示100个label控件
一行显示10个
求大神当老师
求简单的代码
搜索更多相关主题的帖子:
等 级:新手上路
Label [] lb = new Label[3000];
  &&for(int i = 0; i & 3000; i++)
   lb[i] = new Label();
   lb[i].Location = new System.Drawing.Point( 80+12 * (i % 100),180+15 * (i / 100));
   lb[i].Name = &btnTest&;
   lb[i].Size = new System.Drawing.Size(10, 12);
   lb[i].Text = &.&;
&&&&&lb[i].BackColor = Color.W
&&&&&lb[i].Modifiers=
&&&&&//lb[i].Font = new Font(&微软雅黑&, 30, FontStyle.Bold, GraphicsUnit.Pixel);
   this.Controls.Add(lb[i]);
你参看下这个
等 级:蝙蝠侠
帖 子:115
专家分:789
程序代码:int n = <font color=#;
&&&&&&&&&&&&for (int i =<font color=#; i & <font color=#; i++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& for (int j = <font color=#; j & <font color=#; j++)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&Label lb = new Label();
&&&&&&&&&&&&&&&&&&&&lb.Name = &lable& + n.ToString();
&&&&&&&&&&&&&&&&&&&&lb.Width=<font color=#;
&&&&&&&&&&&&&&&&&&&&lb.Height=<font color=#;
&&&&&&&&&&&&&&&&&&&&lb.Text = lb.N
&&&&&&&&&&&&&&&&&&&&lb.Location = new Point(lb.Width * i, lb.Height * j);
&&&&&&&&&&&&&&&&&&&&this.Controls.Add(lb);
&&&&&&&&&&&&&&&&&&&&n++;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
来 自:山东济宁
等 级:论坛游民
帖 子:23
专家分:28
回复 3楼 lantian8134
能不能用一个For实现
前辈们。小孩子报道,多多指教
等 级:蝙蝠侠
帖 子:115
专家分:789
程序代码:当然可以,但逻辑上没有上面清晰
int n = <font color=#;
&&&&&&&&&&&&int h = <font color=#;
&&&&&&&&&&&&int w = <font color=#;
&&&&&&&&&&&&for (int i =<font color=#; i & <font color=#; i++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& Label lb = new Label();
&&&&&&&&&&&&&&& lb.Name = &lable& + n.ToString();
&&&&&&&&&&&&&&& lb.Width = <font color=#;
&&&&&&&&&&&&&&& lb.Height = <font color=#;
&&&&&&&&&&&&&&& lb.Text = lb.N
&&&&&&&&&&&&&&& lb.Location = new Point(lb.Width * w, lb.Height * h);
&&&&&&&&&&&&&&& this.Controls.Add(lb);
&&&&&&&&&&&&&&& n++;
&&&&&&&&&&&&&&& if (i == <font color=# || i.ToString().Substring(i.ToString().Length - <font color=#) !=&<font color=#&)
&&&&&&&&&&&&&&&&&&&&h++;
&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&&&&&&&h = <font color=#;
&&&&&&&&&&&&&&& if (i != <font color=# && i.ToString().Substring(i.ToString().Length - <font color=#) == &<font color=#&)
&&&&&&&&&&&&&&&&&&&&w++;
&&&&&&&&&&&&}
来 自:山东济宁
等 级:论坛游民
帖 子:23
专家分:28
回复 5楼 lantian8134
你能加我QQ吗&&&我想让你长期的教我&&&
前辈们。小孩子报道,多多指教
等 级:蝙蝠侠
帖 子:115
专家分:789
学程序设计主要还是靠自己多看,多想,多动手。
建议你从基础的学起,不要一上来就开始学winform程序,虽然东问问西问问一个简单的窗口程序也做出来了,但是基本的概念还是云里雾里的。
自己选一本基础的书先看一遍,偏重语法和概念的,在这个阶段学习控制台程序足矣。
让我做你的老师只怕我能力和时间都有限。如果你有不懂的地方还是在论坛中发帖子吧,里面的人都很热心,而且技术好的人也很多。
最后祝你学习顺利!
来 自:山东济宁
等 级:论坛游民
帖 子:23
专家分:28
呵呵&&&我就是想加你&&& 如果你在线我可以随时问你,我现在是学生,学的就是C#,有书,老师安排的作业不会,就想办法解决,可以给我指导吗,你的QQ多少,你加我也行
前辈们。小孩子报道,多多指教
版权所有,并保留所有权利。
Powered by , Processed in 0.191373 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights ReservedWinforms中怎么让Label控件隔一段时间显示别的内容?_百度知道
Winforms中怎么让Label控件隔一段时间显示别的内容?
比如,刚开始Label显示1,然后几秒后显示2再过几秒显示3...求大神帮忙
我有更好的答案
lable1.Text = DateTime.Now.ToString(&yyyy-MM-dd&);
//仅显示当前日期,不包括时间label1.Text = DateTime.Now.ToString(&yyyy-MM-dd:HH:mm:ss&);
//显示日期和时间
不是显示时间
采纳率:90%
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 c 拖放label控件 的文章

 

随机推荐