本文實(shí)例講述了WinForm實(shí)現(xiàn)頁面按鈕定時隱藏功能。分享給大家供大家參考,具體如下:
有時候在做程序時需要將頁面上某一項(xiàng)顯示出來,然后過一段時間后消失掉,這時可以通過timer定時來實(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;此時會發(fā)現(xiàn)這兩個不是同一個線程,因此我們需要用委托delegate來實(shí)現(xiàn)跨線程
定義一個委托
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;   }}此時在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;
更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《WinForm控件用法總結(jié)》、《C#窗體操作技巧匯總》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#常見控件用法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》及《C#程序設(shè)計(jì)之線程使用技巧總結(jié)》
希望本文所述對大家C#程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選