PB6.5.1和PB9.0以内:</p>
问题一:在itemchanged事件中:return 1 在itemerror事件中:return 3 在运行时,触发的事件顺序是:itemchanged-->itemerror-->itemchanged-->itemerror 为什么每个事件触发两次?</p>
问题2:在itemchanged 事件中:返回1 在itemerror 事件中:返回2 在运行时,焦点没有移动到下一个单元格。为什么?</p>
谢谢。
PB6.5.1和PB9.0以内:</p>
问题一:在itemchanged事件中:return 1 在itemerror事件中:return 3 在运行时,触发的事件顺序是:itemchanged-->itemerror-->itemchanged-->itemerror 为什么每个事件触发两次?</p>
问题2:在itemchanged 事件中:返回1 在itemerror 事件中:返回2 在运行时,焦点没有移动到下一个单元格。为什么?</p>
谢谢。
问题 1:通过从 中返回 3 itemerror
,您拒绝了数据,这会清除列并itemchanged
再次触发。
至于为什么 PowerBuilder 设计为以这种方式工作的哲学原因,我怀疑他们认为这将遵循最不意外的原则,即他们预计人们会问为什么拒绝输入没有触发itemchanged
。
问题 2:事件itemchanged
覆盖itemerror
. 在itemchanged
您拒绝输入并阻止焦点更改时;在itemerror
你现在接受输入,但你没有删除焦点改变的块。您应该从 中返回 2 ,因为您可以通过返回 1 或 3itemchanged
来控制是否允许焦点从事件中更改。itemerror
如果有人在没有方便的 powerbuilder 帮助文件的情况下阅读此问题:
返回值itemchanged
:
0(默认)接受数据值
1 拒绝数据值并且不允许焦点改变(触发 itemerror)
2 拒绝数据值但允许焦点改变(触发 itemerror)
返回值itemerror
:
0(默认)拒绝数据值并显示错误消息框
1 拒绝数据值但没有消息框
2 接受数据值
3 拒绝数据值但允许焦点更改