DateTime控件ValueChanged事件,C#

时间:2011-01-05 20:07:43

标签: winforms events datetime

我有一个 SQL查询,当有人在我的Windows窗体上更改DateTime Control上的日期时会运行。

每当DateTime Control的{​​{1}}属性被触发时,(当前)都会触发查询。

这很糟糕,因为:

  1. 如果有人试图使用Control的滚动功能从1月回到去年9月,则ValueChanged事件每个月触发一次(使GUI变慢并进行不必要的SQL调用)。< / p>

  2. 如果有人通过在文本框中键入值来手动更新日期,则ValueChanged属性不会触发。

  3. 我无法使用Control的ValueChanged属性来解决#1 ,因为#2 不会触发。

    CloseUp属性会很好,但TextChanged不会公开其中一个属性。

    当我的日期真的被更改时,最好的方法是什么? (我不会添加轮询表单的计时器)

    DateTime Control

1 个答案:

答案 0 :(得分:1)

  

(我不会添加轮询表单的计时器)

您排除了解决此问题应该做的一件事。然后,您不会使用计时器轮询表单,而是在DataChanged事件处理程序中启动一个。 Tick事件处理程序禁用计时器并运行查询。大概做一个左右。如果您认为这会使用户放慢太多,请添加一个按钮。

遥远的第二选择可能是您可以取消的异步查询。像SqlCommand.BeginExecuteXxxx()一样。适用于UI,对dbase服务器负载效果不佳。