2015-11-19 110 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中发生。也就是说,我强烈建议您还将该插入/更新方法放入具有进度对话框的异步任务中,以便用户知道信息正在更新。 –