WinForm實(shí)現(xiàn)頁(yè)面按鈕定時(shí)隱藏功能
本文實(shí)例講述了WinForm實(shí)現(xiàn)頁(yè)面按鈕定時(shí)隱藏功能。分享給大家供大家參考,具體如下:
有時(shí)候在做程序時(shí)需要將頁(yè)面上某一項(xiàng)顯示出來(lái),然后過(guò)一段時(shí)間后消失掉,這時(shí)可以通過(guò)timer定時(shí)來(lái)實(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
事件中寫(xiě)入相應(yīng)的代碼,列如:label1.Visible = false;
此時(shí)會(huì)發(fā)現(xiàn)這兩個(gè)不是同一個(gè)線程,因此我們需要用委托delegate
來(lái)實(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
事件中寫(xiě)入
CheckForIllegalCrossThreadCalls = false;////避免跨線程的問(wèn)題 label1.Visible = false;
更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《WinForm控件用法總結(jié)》、《C#窗體操作技巧匯總》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#常見(jiàn)控件用法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》及《C#程序設(shè)計(jì)之線程使用技巧總結(jié)》
希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#中圖片、二進(jìn)制與字符串的相互轉(zhuǎn)換方法
這篇文章主要介紹了C#中圖片、二進(jìn)制與字符串的相互轉(zhuǎn)換方法,涉及C#針對(duì)不同數(shù)據(jù)類型的解析與轉(zhuǎn)換操作技巧,需要的朋友可以參考下2016-06-06c#遠(yuǎn)程html數(shù)據(jù)抓取實(shí)例分享
這篇文章主要介紹了c#遠(yuǎn)程html數(shù)據(jù)抓取的方法,大家參考使用吧2013-12-12CefSharp如何進(jìn)行頁(yè)面的縮放(Ctrl+滾輪)
CefSharp簡(jiǎn)單來(lái)說(shuō)就是一款.Net編寫(xiě)的瀏覽器包,本文主要介紹了CefSharp如何進(jìn)行頁(yè)面的縮放,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06C#對(duì)INI文件進(jìn)行讀寫(xiě)操作的示例代碼
這篇文章主要為大家詳細(xì)介紹了C#對(duì)INI文件進(jìn)行讀寫(xiě)操作的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,有需要的小伙伴可以參考一下2024-02-02