本文實(shí)例講述了WinForm實(shí)現(xiàn)頁(yè)面按鈕定時(shí)隱藏功能。分享給大家供大家參考,具體如下:
有時(shí)候在做程序時(shí)需要將頁(yè)面上某一項(xiàng)顯示出來,然后過一段時(shí)間后消失掉,這時(shí)可以通過timer定時(shí)來實(shí)現(xiàn)
private void Form1_Load(object sender, EventArgs e){ System.Timers.Timer t = new System.Timers.Timer(3000); t.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent); t.Enabled = true; t.AutoReset = false;}
然后在OnTimedEvent
事件中寫入相應(yīng)的代碼,列如:label1.Visible = false;
此時(shí)會(huì)發(fā)現(xiàn)這兩個(gè)不是同一個(gè)線程,因此我們需要用委托delegate
來實(shí)現(xiàn)跨線程
定義一個(gè)委托
private delegate void SetVisibleCallback();//在給label1.visible賦值的地方調(diào)用以下方法即可private void SetVisible(){ // InvokeRequired需要比較調(diào)用線程ID和創(chuàng)建線程ID // 如果它們不相同則返回true if (this.label1.InvokeRequired) { SetVisibleCallback d = new SetVisibleCallback(SetPan); this.Invoke(d); } else { this.label1.Visible = false; }}
此時(shí)在timer產(chǎn)生的事件中調(diào)用SetVisible()
即可
private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e){ SetPan();}
當(dāng)然,如果不用委托實(shí)現(xiàn),可以在OnTimedEvent
事件中寫入
CheckForIllegalCrossThreadCalls = false;////避免跨線程的問題label1.Visible = false;
希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注