2015-11-19 42 views
0

我有一個要求,即在總計更改時必須採取表格總值,然後插入或更新表格。我正在使用Text Changed來計算總數,並在相同的文本中更改事件我有插入和更新語句,它工作正常,但是,它正在減慢窗體加載時間,換句話說,窗體正在採取加載時間更長,並且某些時間形式會卡住,無法來回導航。我只是想知道是否有任何其他事件可以用來避免這種表單加載問題。在文本更改事件中插入並更新語句

private void txtSchBTotalLiability_TextChanged(object sender, EventArgs e) 
{ 
    UpdateBalance(); 
    bl.UpdateFormOQSWTTaxData(_selectedcompanyid, yearstr, Convert.ToInt32(_qtrstr), !string.IsNullOrEmpty(txtSchBTotalLiability.Text) ? Convert.ToDecimal(txtSchBTotalLiability.Text) : 0.0m); 
    txtSWTax.Text = txtSchBTotalLiability.Text;  
} 
+0

您是否嘗試過在表單加載事件而不是設計器中綁定TextChanged事件? – JimmyV

+0

爲什麼不使用OnLostFocus(EventArgs)事件,是否有必要對文本進行更改? –

+0

Jimmy,是的,我做過 – Reed

回答

0

使其成爲異步任務。這應該解開主線程。此外,如果我得到這個權利是更新/插入頁面加載過程中發生。表單是否總是以空值加載?如果是這樣,你可能應該跳過在加載期間插入/更新,因爲表單是空的。

+0

嗨薩爾瓦多,忽略我以前的發言。我有一個樹視圖,並且我只在表單加載事件中綁定了樹視圖,其餘的事件都在主窗體類中。當表單加載時,它會顯示特定表中有哪些值,用戶可以編輯或添加。 private void Form1_Load(object sender,EventArgs e) { BindTree(); } – Reed

+1

與LarsTech建議一樣,綁定數據後,應在表單加載事件結束時附加事件。其中一個問題是,負載中的數據綁定會觸發textchanged事件,併發生在TreeView中的多個字段中。由於所有這些都發生在主線程中,因此UI會凍結,而所有更新和插入都會在Load中發生。也就是說,我強烈建議您還將該插入/更新方法放入具有進度對話框的異步任務中,以便用戶知道信息正在更新。 –