在winform中的button,點擊后先設(shè)置enable為false,中間處理其他,最后設(shè)置enable為true但是執(zhí)行過程中再點擊button,依然可以執(zhí)行clickprivate void button1_Click(object sender, EventArgs e){button1.Enabled = false;textBox1.Text += "在執(zhí)行中········";//process somethingtextBox1.Text += "執(zhí)行完畢!";button1.Enabled= true;}這問題怎么解決
2 回答

肥皂起泡泡
TA貢獻1829條經(jīng)驗 獲得超6個贊
這是因為消息機制引起的問題,如果處理click事件的函數(shù)執(zhí)行時間過長,那么下一次點擊的消息會存入消息隊列,等到當(dāng)前click處理函數(shù)退出以后,再從消息隊列獲取此消息執(zhí)行。你可以使用我提供的代碼,多次點擊button,你會看到多次的重復(fù)執(zhí)行。
解決此問題的辦法是盡可能的讓click事件處理函數(shù)的執(zhí)行時間縮短,更嚴(yán)謹?shù)淖龇ㄊ亲约涸O(shè)置同步事件,忽略無效的點擊。

GCT1015
TA貢獻1827條經(jīng)驗 獲得超4個贊
沒啥好說的:
把 調(diào)用 webservice 改成異步調(diào)用
完成后回調(diào) 執(zhí)行
button1.Enabled= true;
- 2 回答
- 0 關(guān)注
- 963 瀏覽
添加回答
舉報
0/150
提交
取消