我们做的是Winform程式,有一查询按钮查询比较多数据,用户在未执行完时,比较心急的用户会连续多次点击,结果程式也会执行多次,这样给网络和服务器造成一些不必要的开支,我代码如下。
private void btn_QueryQ_Click(object sender, EventArgs e)
{
try
{
this.btn_QueryQ.Enabled = false;
this.Cursor = Cursors.WaitCursor;
Application.DoEvents();
WinSrv.ExecuteNonQuery(" EXEC PLMS_ALogisticsPH_CHK 1,N'%" + myTextBox4.Text.Trim() + "%',N'%" + myComboBox1.Text.Trim() + "%',N'" + myDateTimePicker1.Value.ToString("yyyy-MM-dd 00:00") + "',N'" + myDateTimePicker2.Value.ToString("yyyy-MM-dd 23:59") + "' ,N'" + myTextBox1.Text.Trim() + "' ,N'' ,N'' ,N'' ,N'" + SessionAuth.UserID + "'", new object[] { });
string strwhere = "UserID = N'" + SessionAuth.UserID + "'";
if (strDepartment != "")
{
strwhere += " and " + strDepartment;
}
strWhereM = strwhere;
WinSrv.SelectDataSet(AppDataSet, strwhere);
CalcDistanceDepart();
myTextBox1.Focus();
}
catch (Exception ex)
{
MessageBoxShow(ex.Message + ex.StackTrace);
}
finally
{
this.btn_QueryQ.Enabled = true;
this.Cursor = Cursors.Default;
}
}
------解决思路----------------------
这样子设置可能是不行,一个事件没影响完,所以设置为false没有效果。
用异步加设置。
Invoke(new Action(){
btn.Enable=false;
});