[問題] Application.DoEvents, winform要點兩次
我有兩個button,start和stop
我想要按下start後在winform上顯示一直跑的數字
當按下stop就停止,程式碼大概如下
flag = 0;
start
{
while(flag == 0)
{
label.Text = (i++).ToString();
Application.DoEvents();
}
}
stop
{
flag = 1;
}
我原本是用label.Update(),但發現程式在跑的時候winform完全不理按鍵
後來改成application.DoEvents問題解決了
但按下start後整個介面處於忙碌狀態,游標移到button上不會變色
按一下介面後游標移到button上就有反應了,好像介面從假死狀態活過來了一樣
再按一下stop就可執行了
有方法可以讓按下start後介面是處於隨時可以按stop的狀態嗎
也就是說不用按兩下,介面隨時可接受外界觸發的狀態
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.40.65.145
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1515849605.A.05F.html
※ 編輯: siate (114.40.65.145), 01/13/2018 21:20:45
※ 編輯: siate (114.40.65.145), 01/13/2018 21:24:05
※ 編輯: siate (114.40.65.145), 01/13/2018 21:26:01
→
01/13 22:03,
7年前
, 1F
01/13 22:03, 1F
我查了一下,start裡改成MethodInvoker mi = new MethodInvoker(this.UpdateUI);
this.BeginInvoke(mi,null); 然後while放在UpdateUI裡就成功了,雖然不太懂原理
推
01/13 23:20,
7年前
, 2F
01/13 23:20, 2F
推
01/13 23:59,
7年前
, 3F
01/13 23:59, 3F
※ 編輯: siate (114.40.65.145), 01/14/2018 01:39:13
→
01/14 19:30,
7年前
, 4F
01/14 19:30, 4F
→
01/24 20:41,
7年前
, 5F
01/24 20:41, 5F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章