[英]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.net
和winforms
不是一回事。
您可以在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.