好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

WinForm实现页面按钮定时隐藏功能

本文实例讲述了WinForm实现页面按钮定时隐藏功能。分享给大家供大家参考,具体如下:

有时候在做程序时需要将页面上某一项显示出来,然后过一段时间后消失掉,这时可以通过timer定时来实现

?

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 事件中写入相应的代码,列如: label1.Visible = false; 此时会发现这两个不是同一个线程,因此我们需要用委托 delegate 来实现跨线程

定义一个委托

?

private delegate void SetVisibleCallback();

//在给label1.visible赋值的地方调用以下方法即可

private void SetVisible()

{

   // InvokeRequired需要比较调用线程ID和创建线程ID

   // 如果它们不相同则返回true

   if ( this .label1.InvokeRequired)

   {

     SetVisibleCallback d = new SetVisibleCallback(SetPan);

     this .Invoke(d);

    }

    else

    {

     this .label1.Visible = false ;

    }

}

此时在timer产生的事件中调用 SetVisible() 即可

?

private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)

{

   SetPan();

}

当然,如果不用委托实现,可以在 OnTimedEvent 事件中写入

?

CheckForIllegalCrossThreadCalls = false ; ////避免跨线程的问题

label1.Visible = false ;

希望本文所述对大家C#程序设计有所帮助。

dy("nrwz");

查看更多关于WinForm实现页面按钮定时隐藏功能的详细内容...

  阅读:35次