我有一个 SQL查询,当有人在我的Windows窗体上更改DateTime Control
上的日期时会运行。
每当DateTime Control
的{{1}}属性被触发时,(当前)都会触发查询。
这很糟糕,因为:
如果有人试图使用Control的滚动功能从1月回到去年9月,则ValueChanged
事件每个月触发一次(使GUI变慢并进行不必要的SQL调用)。< / p>
如果有人通过在文本框中键入值来手动更新日期,则ValueChanged
属性不会触发。
我无法使用Control的ValueChanged
属性来解决#1 ,因为#2 不会触发。
CloseUp
属性会很好,但TextChanged
不会公开其中一个属性。
当我的日期真的被更改时,最好的方法是什么? (我不会添加轮询表单的计时器)
DateTime Control
答案 0 :(得分:1)
(我不会添加轮询表单的计时器)
您排除了解决此问题应该做的一件事。然后,您不会使用计时器轮询表单,而是在DataChanged事件处理程序中启动一个。 Tick事件处理程序禁用计时器并运行查询。大概做一个左右。如果您认为这会使用户放慢太多,请添加一个按钮。
遥远的第二选择可能是您可以取消的异步查询。像SqlCommand.BeginExecuteXxxx()一样。适用于UI,对dbase服务器负载效果不佳。