【问题标题】:c# Refresh a windows formc# 刷新一个windows窗体
【发布时间】:2011-05-10 05:24:16
【问题描述】:

我有一个 windows 窗体,它必须自动刷新,而无需使用任何按钮来刷新窗体。

现在正在使用一个按钮来刷新表单。但我需要表单每 1 分钟自动刷新一次。

可以在windows窗体应用中做。

【问题讨论】:

标签: c# winforms


【解决方案1】:

我不确定您为什么需要刷新表单,但是将您拥有的任何代码放在按钮后面的计时器事件中。您已经有了代码,所以只需创建一个计时器,将其设置为您想要的长度,然后将其打开。

这是您需要的代码:

  Timer myTimer = new Timer();
  myTimer.Elapsed += new ElapsedEventHandler( TimeUp );
  myTimer.Interval = 1000;
  myTimer.Start();

public static void TimeUp( object source, ElapsedEventArgs e )
{
    //Your code here
}

【讨论】:

  • 我认为OP的意思是刷新表单上的一些数据。
  • 不推荐 System.Timers.Timer,因为它隐藏了错误(所有未处理的异常都将被忽略)。 System.Threading.Timer 来自 MSDN:在 .NET Framework 2.0 版和更早版本中,Timer 组件捕获并抑制由 Elapsed 事件的事件处理程序引发的所有异常。此行为可能会在 .NET Framework 的未来版本中发生更改。它没有说它是否已经改变了。
  • 感谢您的回答。由于这是我的第一个项目,我在哪里粘贴您的代码的前四行。我必须在表单的构造函数中粘贴。请帮助我。
  • @bharathi - 前四行需要采用某种方法。通常它在 Form_Load 方法或表单启动时正在运行的任何方法中。
  • 我已将前四行添加到加载表单中。在 public static void TimeUp(object source,ElapsedEventArgs e){ getdata();} 中。在此 getdata 将从数据库中获取数据。一旦在 Time up 中添加此 getdata 方法,就会显示错误 1 ​​非静态字段、方法或属性需要对象引用。即使我尝试通过删除静态它也不起作用。
【解决方案2】:

您可以将计时器添加到表单并在 Form_Load 上启用它。将定时器的毫秒值设置为60000。在Timer_Tick函数中,您可以放置​​刷新的代码。

【讨论】:

    【解决方案3】:

    使用System.Windows.Forms.Timer

    Timer.Tick 事件在指定的计时器间隔已过且启用计时器时发生。您可以使用它来刷新表单。

     // This is the method to run when the timer is raised.
    private static void Timer_Tick(Object myObject, EventArgs myEventArgs) 
    { // Refresh Form }
    

    使用Timer.Interval 属性指定计时器间隔。在您的情况下,您需要将其设置为 60,000:

    Timer.Interval = 60000;
    

    这些是一些关于它的教程:

    http://www.codeproject.com/KB/cs/timeralarm.aspx

    http://www.dotnetperls.com/timer

    http://www.c-sharpcorner.com/UploadFile/mahesh/WorkingwithTimerControlinCSharp11302005054911AM/WorkingwithTimerControlinCSharp.aspx

    【讨论】:

      【解决方案4】:

      使用 Timer 控件并将 Interval 设置为 60*1000 毫秒(1 分钟),并在滴答事件中使用代码刷新表单。

      【讨论】:

        【解决方案5】:

        做这些工作!一步一步:

        1. 在表单中添加计时器
        2. 将值(间隔)设置为1000
        3. 双击表单
        4. 为 Form_Load 输入这个:

          timer1.Start(); //Set your timer name instead of "timer1"

        5. 双击计时器并输入timer_tick:

          this.Refresh();

        【讨论】:

          猜你喜欢
          • 2016-05-23
          • 2010-12-02
          • 2015-04-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多