我正在寻找最佳解决方案,当文本框仍然保持焦点时,更新文本框的文本值到数据库。 我不想在TextChanged或Leave事件中执行此操作,因为我需要在文本框仍然包含焦点且用户停止输入时从数据库查询实际值。
我正在寻找最佳解决方案,当文本框仍然保持焦点时,更新文本框的文本值到数据库。 我不想在TextChanged或Leave事件中执行此操作,因为我需要在文本框仍然包含焦点且用户停止输入时从数据库查询实际值。
Every X seconds (Using a Timer)
if (txtMyTextBox.Text != previousText)
previousText = txtMyTextBox.Text;
else //(if the text is the same before X seconds)
//User has stopped typing! Save it to the database
//Stop the timer!
txtMyTextBox
的 TextChange
事件将检查 Timer
是否已停止,如果是,则重新启动它。
X 秒后,如果没有输入,则认为用户已停止输入。
考虑到有很多文本框,这可能会变得非常麻烦 :S 因此我完全同意应该有更好的方法。
我会选择另一种方式:
首先定义您认为用户停止输入的时间。失去焦点是一个非常好的指示,因为用户明确地离开了文本框。超时不太可靠,因为用户可能打字速度慢或分心。程序然后更改文本可能会让用户感到困惑。
您甚至可以创建一个两值文本框控件:一个输入字段接受用户输入,另一个(只读)字段显示数据库中的当前值。该控件可能有一个按钮,允许用户接受来自数据库的值。
所有这些都感觉像是试图回避经典乐观并发问题的不良副作用:如果在编辑期间数据库中的值发生更改怎么办?
您正在创建的解决方案具有很多开销,可能不值得(查看网络流量...)。只允许用户输入一个值。将其传回数据库,捕获冲突并允许用户处理冲突。这将更好地扩展,并且更容易实现。