簡體   English   中英

窗體刷新問題Windows窗體ASP.net

[英]Form refresh issue windows form ASP.net

如果datagrid為空,我嘗試每30分鍾刷新一次表單。 我的代碼如下:

private void Form1_Load(object sender, EventArgs e)
{
    BindDataGrid();

    if (dataGrid_FileList.RowCount <=0)
    {
        Timer refreshTimer = new Timer();
        refreshTimer.Interval = 30000;  //30 seconds in milliseconds
        refreshTimer.Tick += new EventHandler(refreshTimer_Tick);
        refreshTimer.Start();
    }
}

void refreshTimer_Tick(object sender, EventArgs e)
{
    this.Controls.Clear();
    this.InitializeComponent();
    BindDataGrid();

    if (dataGrid_FileList.RowCount>0)
    {
        InhouseDownloadeer_Shown(this, null);
    }
}

當datagrid的RowCount為<=0時,此代碼效果很好,但即使datagrid包含的行> 0該代碼仍將繼續。 如果數據網格包含行,如何防止refreshTimer_Tick?

您也可以停止計時器。 在方法之外聲明計時器變量。

Timer refreshTimer = new Timer();

private void Form1_Load(object sender, EventArgs e)
{
    refreshTimer.Interval = 30000;
    refreshTimer.Tick += new EventHandler(refreshTimer_Tick);
}

現在,只需調用refreshTimer.Stop(); 當需要另一種方法時。

PS asp.netwinforms不是一回事。

您可以在databind方法之后調用if語句。 而且我認為它在您的數據網格綁定其行之前執行。

對我來說,您應該從refreshTimerTick事件中刪除以下代碼:

    if (dataGrid_FileList.RowCount>0)
    {
       InhouseDownloadeer_Shown(this, null);
    } 

喜歡 :

    void refreshTimer_Tick(object sender, EventArgs e)
    {
        this.Controls.Clear();
        this.InitializeComponent();
        BindDataGrid();        
     }

並將其放在DataBount事件中

  void dataGrid_DataBound(object sender, EventArgs e)
  {
     if (dataGrid_FileList.RowCount>0)
        {
            InhouseDownloadeer_Shown(this, null);
        }    
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM