所有控件都提供某种事件来指示值已被修改。例如,当您输入文本框并开始键入每次击键时,会发生TextChanged
事件。打开组合框并在下拉列表中选择新项目时,会收到SelectedIndexChanged
个事件。
问题在于,在许多情况下,变化事件表示一系列变化,这些变化代表一些临时的未完成状态。例如当用户输入他的邮政编码时,没有理由查找城市和州,甚至在用户完成输入之前尝试验证它。当用户专注于运输方法组合并按下向上/向下键以导航组合值时,他试图找到他想要的那个,没有理由假设已经指定了运输方法,因此将其应用于发票。可能有意义的是等待,直到他在翻阅值之后退出组合框以发信号通知已选择装运方法。我们不想被一系列临时国家所打扰。
在我们的商店中,我们实施了Finalized
事件,该事件仅在用户开始进行一些手动更改时触发(而不是像从DB设置邮政编码等程序化更改),然后再完成。对于不同的控件,必须以不同方式处理此Finalized
事件;我不知道任何.NET功能可以使这更容易。
我现在唯一的想法是尝试使用Rx(功能反应式编程)之类的东西来适应这种情况。有没有想过一个简单的.NET方法来促进这个?
答案 0 :(得分:0)
对于邮政编码文本框,您可以使用leave
事件(当文本框失去焦点时发生),或者在textchanged
事件中您可以使用if语句:
if ziptextbox.text.length = 5 then
'Hooray! do stuff here
end if
您也可以将leave
事件用于组合框
答案 1 :(得分:0)
Validating
和Validated
事件工作得很好;然而,这些名字具有误导性,因此我从未想过这些是合适的。
所有归功于Hans Passant的评论为我解决了这个问题。 (如果你回答,汉斯会将信用转给你。)